aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorvanhauser-thc <vh@thc.org>2021-03-24 11:12:23 +0100
committervanhauser-thc <vh@thc.org>2021-03-24 11:12:44 +0100
commitd68bd656fef035e83bcc372680e8ecd538d9badb (patch)
tree863590b61ece8db9a1bc13914f47c3c1f93accdd
parent8bd5d7676ed41c599e31a26f0170f4f4276912ca (diff)
downloadafl++-d68bd656fef035e83bcc372680e8ecd538d9badb.tar.gz
fix counting favorites
-rw-r--r--TODO.md1
-rw-r--r--src/afl-fuzz-one.c21
-rw-r--r--src/afl-fuzz-queue.c14
3 files changed, 25 insertions, 11 deletions
diff --git a/TODO.md b/TODO.md
index e5a678cf..b8a091ff 100644
--- a/TODO.md
+++ b/TODO.md
@@ -2,6 +2,7 @@
## Roadmap 3.00+
+ - Update afl->pending_not_fuzzed for MOpt
- CPU affinity for many cores? There seems to be an issue > 96 cores
- afl-plot to support multiple plot_data
- afl_custom_fuzz_splice_optin()
diff --git a/src/afl-fuzz-one.c b/src/afl-fuzz-one.c
index c73e394a..4e8154cd 100644
--- a/src/afl-fuzz-one.c
+++ b/src/afl-fuzz-one.c
@@ -5119,14 +5119,23 @@ pacemaker_fuzzing:
/* Update afl->pending_not_fuzzed count if we made it through the
calibration cycle and have not seen this entry before. */
+ /*
+ // TODO FIXME: I think we need this plus need an -L -1 check
+ if (!afl->stop_soon && !afl->queue_cur->cal_failed &&
+ (afl->queue_cur->was_fuzzed == 0 || afl->queue_cur->fuzz_level == 0)
+ && !afl->queue_cur->disabled) {
- // if (!afl->stop_soon && !afl->queue_cur->cal_failed &&
- // !afl->queue_cur->was_fuzzed) {
+ if (!afl->queue_cur->was_fuzzed) {
- // afl->queue_cur->was_fuzzed = 1;
- // --afl->pending_not_fuzzed;
- // if (afl->queue_cur->favored) --afl->pending_favored;
- // }
+ --afl->pending_not_fuzzed;
+ afl->queue_cur->was_fuzzed = 1;
+ if (afl->queue_cur->favored) { --afl->pending_favored; }
+
+ }
+
+ }
+
+ */
orig_in = NULL;
diff --git a/src/afl-fuzz-queue.c b/src/afl-fuzz-queue.c
index 63592cef..e5f51a6c 100644
--- a/src/afl-fuzz-queue.c
+++ b/src/afl-fuzz-queue.c
@@ -680,13 +680,17 @@ void cull_queue(afl_state_t *afl) {
}
- afl->top_rated[i]->favored = 1;
- ++afl->queued_favored;
+ if (!afl->top_rated[i]->favored) {
- if (afl->top_rated[i]->fuzz_level == 0 ||
- !afl->top_rated[i]->was_fuzzed) {
+ afl->top_rated[i]->favored = 1;
+ ++afl->queued_favored;
- ++afl->pending_favored;
+ if (afl->top_rated[i]->fuzz_level == 0 ||
+ !afl->top_rated[i]->was_fuzzed) {
+
+ ++afl->pending_favored;
+
+ }
}