Support multiple custom mutators (#282)

* Make a list of custom mutators using env variable

* Set up multiple custom mutators

* Add destroy custom mutator and changes to load_custom_mutator

* Use array instead of list, make changes to afl-fuzz-one for multiple mutators

* Make change to fuzz-one custom_queue_get to support multiple mutators

* Modify custom python mutator support

* Fix bug

* Fix missing afl->mutator->data

* Revert to list with max count

* Change custom_pre_save hook and code format

* Free custom_mutator struct in the list

* Add testcase for multiple custom mutators

* Resolve merge conflict
This commit is contained in:
Rishi Ranjan
2020-05-08 23:38:27 +05:30
committed by GitHub
parent 768053b6f2
commit 190f3024da
10 changed files with 363 additions and 254 deletions

View File

@ -140,15 +140,20 @@ void add_to_queue(afl_state_t *afl, u8 *fname, u32 len, u8 passed_det) {
afl->last_path_time = get_cur_time();
if (afl->mutator && afl->mutator->afl_custom_queue_new_entry) {
if (afl->custom_mutators_count) {
u8 *fname_orig = NULL;
LIST_FOREACH(&afl->custom_mutator_list, struct custom_mutator, {
/* At the initialization stage, queue_cur is NULL */
if (afl->queue_cur) { fname_orig = afl->queue_cur->fname; }
if ( el->afl_custom_queue_new_entry) {
u8 *fname_orig = NULL;
afl->mutator->afl_custom_queue_new_entry(afl->mutator->data, fname,
fname_orig);
/* At the initialization stage, queue_cur is NULL */
if (afl->queue_cur) fname_orig = afl->queue_cur->fname;
el->afl_custom_queue_new_entry(el->data, fname, fname_orig);
}
} );
}