| 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 argcarguments 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.
 
       Dr. Memory version 2.3.20368 --- Fri Oct 24 2025 03:28:18
    Dr. Memory version 2.3.20368 --- Fri Oct 24 2025 03:28:18