Dr. Memory
|
Header specifying the Dr. Fuzz mutator library interface. More...
#include "drmemory_framework.h"
Functions | |
LIB_EXPORT drmf_status_t LIBFUNC() | drfuzz_mutator_start (DR_PARAM_OUT drfuzz_mutator_t **mutator, DR_PARAM_IN void *input_seed, DR_PARAM_IN size_t size, DR_PARAM_IN int argc, DR_PARAM_IN const char *argv[]) |
LIB_EXPORT bool LIBFUNC() | drfuzz_mutator_has_next_value (drfuzz_mutator_t *mutator) |
LIB_EXPORT drmf_status_t LIBFUNC() | drfuzz_mutator_get_current_value (DR_PARAM_IN drfuzz_mutator_t *mutator, DR_PARAM_OUT void *buffer) |
LIB_EXPORT drmf_status_t LIBFUNC() | drfuzz_mutator_get_next_value (drfuzz_mutator_t *mutator, DR_PARAM_OUT void *buffer) |
LIB_EXPORT drmf_status_t LIBFUNC() | drfuzz_mutator_stop (drfuzz_mutator_t *mutator) |
LIB_EXPORT drmf_status_t LIBFUNC() | drfuzz_mutator_feedback (drfuzz_mutator_t *mutator, int feedback) |
Detailed Description
Header specifying the Dr. Fuzz mutator library interface.
To create a new mutator library, include this header in your library compilation (leaving DYNAMIC_INTERFACE undefined) and implement the interface functions defined below. You will need to ensure that drmemory_framework.h is on the include path as well for drmf_status_t.
Function Documentation
◆ drfuzz_mutator_feedback()
LIB_EXPORT drmf_status_t LIBFUNC() drfuzz_mutator_feedback | ( | drfuzz_mutator_t * | mutator, |
int | feedback | ||
) |
Provides feedback to the mutator about the effect of the last mutation. The meaning of feedback
can be specified by custom mutators. If the meaning of feedback
is not specified, 0 means neutral, and the greater the value of feedback
is, the more effective the last mutation is.
- Note
- This function must be called to enable feedback guided mutation. For example, in Dr. Memory fuzz testing mode, the option -fuzz_coverage must be specified for any custom mutator that supports feedback guided mutation.
◆ drfuzz_mutator_get_current_value()
LIB_EXPORT drmf_status_t LIBFUNC() drfuzz_mutator_get_current_value | ( | DR_PARAM_IN drfuzz_mutator_t * | mutator, |
DR_PARAM_OUT void * | buffer | ||
) |
Provides a copy of the current mutator value. Returns DRMF_SUCCESS on success.
◆ drfuzz_mutator_get_next_value()
LIB_EXPORT drmf_status_t LIBFUNC() drfuzz_mutator_get_next_value | ( | drfuzz_mutator_t * | mutator, |
DR_PARAM_OUT void * | buffer | ||
) |
Writes the next fuzz value to the provided buffer. Returns DRMF_SUCCESS on success.
◆ drfuzz_mutator_has_next_value()
LIB_EXPORT bool LIBFUNC() drfuzz_mutator_has_next_value | ( | drfuzz_mutator_t * | mutator | ) |
Returns true if the mutator can generate the next value. Generally this is only relevant for mutators using a sequential algorithm.
◆ drfuzz_mutator_start()
LIB_EXPORT drmf_status_t LIBFUNC() drfuzz_mutator_start | ( | DR_PARAM_OUT drfuzz_mutator_t ** | mutator, |
DR_PARAM_IN void * | input_seed, | ||
DR_PARAM_IN size_t | size, | ||
DR_PARAM_IN int | argc, | ||
DR_PARAM_IN const char * | argv[] | ||
) |
Initiate mutation on a buffer. Returns DRMF_SUCCESS on success.
- Parameters
-
[out] mutator Return argument for the newly initiated mutator. [in] input_seed Pointer to the seed instance of the buffer to mutate. [in] size The number of bytes in the buffer. [in] argc The number of arguments to customize the mutator. [in] argv An array of argc
arguments to customize the mutator.
◆ drfuzz_mutator_stop()
LIB_EXPORT drmf_status_t LIBFUNC() drfuzz_mutator_stop | ( | drfuzz_mutator_t * | mutator | ) |
Clean up resources allocated for the mutator. Returns DRMF_SUCCESS on success.