diff options
author | vanhauser-thc <vh@thc.org> | 2023-08-31 09:25:41 +0200 |
---|---|---|
committer | vanhauser-thc <vh@thc.org> | 2023-08-31 09:25:41 +0200 |
commit | 78848f863767cee6543166bd52d67e0051641360 (patch) | |
tree | 76d05e29704a71a1c79809f875f294dddc5acbfe | |
parent | 5020e6b275adf0d74e9174b278ff417b5c6a64d2 (diff) | |
download | afl++-78848f863767cee6543166bd52d67e0051641360.tar.gz |
pendfav
-rw-r--r-- | src/afl-fuzz.c | 40 |
1 files changed, 30 insertions, 10 deletions
diff --git a/src/afl-fuzz.c b/src/afl-fuzz.c index 90c255e3..c8cc7da6 100644 --- a/src/afl-fuzz.c +++ b/src/afl-fuzz.c @@ -2707,22 +2707,42 @@ int main(int argc, char **argv_orig, char **envp) { if (likely(!afl->old_seed_selection)) { - if (unlikely(prev_queued_items < afl->queued_items || - afl->reinit_table)) { + if (likely(afl->pending_favored)) { - // we have new queue entries since the last run, recreate alias table - prev_queued_items = afl->queued_items; - create_alias_table(afl); + for (u32 iter = 0; iter < afl->queued_items; ++iter) { - } + if (unlikely(afl->queue_buf[iter]->favored && + !afl->queue_buf[iter]->was_fuzzed)) { - do { + afl->current_entry = iter; + afl->queue_cur = afl->queue_buf[afl->current_entry]; + break; - afl->current_entry = select_next_queue_entry(afl); + } - } while (unlikely(afl->current_entry >= afl->queued_items)); + } - afl->queue_cur = afl->queue_buf[afl->current_entry]; + } else { + + if (unlikely(prev_queued_items < afl->queued_items || + afl->reinit_table)) { + + // we have new queue entries since the last run, recreate alias + // table + prev_queued_items = afl->queued_items; + create_alias_table(afl); + + } + + do { + + afl->current_entry = select_next_queue_entry(afl); + + } while (unlikely(afl->current_entry >= afl->queued_items)); + + afl->queue_cur = afl->queue_buf[afl->current_entry]; + + } } |