aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorvanhauser-thc <vh@thc.org>2023-08-31 09:25:41 +0200
committervanhauser-thc <vh@thc.org>2023-08-31 09:25:41 +0200
commit78848f863767cee6543166bd52d67e0051641360 (patch)
tree76d05e29704a71a1c79809f875f294dddc5acbfe /src
parent5020e6b275adf0d74e9174b278ff417b5c6a64d2 (diff)
downloadafl++-78848f863767cee6543166bd52d67e0051641360.tar.gz
pendfav
Diffstat (limited to 'src')
-rw-r--r--src/afl-fuzz.c40
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];
+
+ }
}