From 172d384bf26b57beecbe084d19530ebc34a6e3fc Mon Sep 17 00:00:00 2001 From: Andrea Fioraldi Date: Sat, 7 Mar 2020 12:11:06 +0100 Subject: custom havoc mutation --- src/afl-fuzz-mutators.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'src/afl-fuzz-mutators.c') diff --git a/src/afl-fuzz-mutators.c b/src/afl-fuzz-mutators.c index 26eaea59..5bf257fb 100644 --- a/src/afl-fuzz-mutators.c +++ b/src/afl-fuzz-mutators.c @@ -146,6 +146,16 @@ void load_custom_mutator(const char* fn) { "trimming will be used."); } + + /* "afl_custom_havoc_mutation", optional */ + mutator->afl_custom_havoc_mutation = dlsym(dh, "afl_custom_havoc_mutation"); + if (!mutator->afl_custom_havoc_mutation) + WARNF("Symbol 'afl_custom_havoc_mutation' not found."); + + /* "afl_custom_havoc_mutation", optional */ + mutator->afl_custom_havoc_mutation_probability = dlsym(dh, "afl_custom_havoc_mutation_probability"); + if (!mutator->afl_custom_havoc_mutation_probability) + WARNF("Symbol 'afl_custom_havoc_mutation_probability' not found."); OKF("Custom mutator '%s' installed successfully.", fn); @@ -301,6 +311,12 @@ void load_custom_mutator_py(const char* module_name) { if (py_functions[PY_FUNC_TRIM]) mutator->afl_custom_trim = trim_py; + + if (py_functions[PY_FUNC_HAVOC_MUTATION]) + mutator->afl_custom_havoc_mutation = havoc_mutation_py; + + if (py_functions[PY_FUNC_HAVOC_MUTATION_PROBABILITY]) + mutator->afl_custom_havoc_mutation_probability = havoc_mutation_probability_py; OKF("Python mutator '%s' installed successfully.", module_name); -- cgit 1.4.1 From ed5d65b54f07570c82f6704fdca403b776ff7be2 Mon Sep 17 00:00:00 2001 From: Andrea Fioraldi Date: Sat, 7 Mar 2020 14:26:33 +0100 Subject: solve linking error when python is not available --- include/afl-fuzz.h | 2 -- src/afl-fuzz-mutators.c | 7 +++++++ 2 files changed, 7 insertions(+), 2 deletions(-) (limited to 'src/afl-fuzz-mutators.c') diff --git a/include/afl-fuzz.h b/include/afl-fuzz.h index 1db44a79..57639411 100644 --- a/include/afl-fuzz.h +++ b/include/afl-fuzz.h @@ -647,8 +647,6 @@ extern PyObject* py_functions[PY_FUNC_COUNT]; /* Custom mutators */ void setup_custom_mutator(void); void destroy_custom_mutator(void); -void load_custom_mutator(const char*); -void load_custom_mutator_py(const char*); u8 trim_case_custom(char** argv, struct queue_entry* q, u8* in_buf); /* Python */ diff --git a/src/afl-fuzz-mutators.c b/src/afl-fuzz-mutators.c index 5bf257fb..76ce2c96 100644 --- a/src/afl-fuzz-mutators.c +++ b/src/afl-fuzz-mutators.c @@ -25,6 +25,11 @@ #include "afl-fuzz.h" +void load_custom_mutator(const char*); +#ifdef USE_PYTHON +void load_custom_mutator_py(const char*); +#endif + void setup_custom_mutator(void) { /* Try mutator library first */ @@ -286,6 +291,7 @@ abort_trimming: } +#ifdef USE_PYTHON void load_custom_mutator_py(const char* module_name) { mutator = ck_alloc(sizeof(struct custom_mutator)); @@ -325,3 +331,4 @@ void load_custom_mutator_py(const char* module_name) { mutator->afl_custom_init(UR(0xFFFFFFFF)); } +#endif -- cgit 1.4.1