hunting ref underflow
diff --git a/src/afl-fuzz-one.c b/src/afl-fuzz-one.c
index a5f77f1..f25ab4e 100644
--- a/src/afl-fuzz-one.c
+++ b/src/afl-fuzz-one.c
@@ -4695,9 +4695,6 @@
} /* block */
- queue_testcase_release(afl, afl->queue_cur);
- orig_in = NULL;
-
return ret_val;
}
diff --git a/src/afl-fuzz-queue.c b/src/afl-fuzz-queue.c
index 58e026f..0b49120 100644
--- a/src/afl-fuzz-queue.c
+++ b/src/afl-fuzz-queue.c
@@ -837,10 +837,17 @@
}
q->testcase_refs++;
- if (!q->testcase_buf) {
+ if (unlikely(!q->testcase_buf || !q->testcase_refs)) {
+ if (!q->testcase_buf) {
- FATAL("Testcase buf is NULL, this should never happen");
+ FATAL("Testcase buf is NULL, this should never happen");
+ }
+ if (!q->testcase_refs) {
+
+ FATAL("Testcase ref overflow. Missing a testcase release somwhere?");
+
+ }
}
return q->testcase_buf;