diff options
author | van Hauser <vh@thc.org> | 2020-10-23 15:21:21 +0200 |
---|---|---|
committer | van Hauser <vh@thc.org> | 2020-10-23 15:21:21 +0200 |
commit | aa0d3785206d52c1815aff850817d55bf50f3598 (patch) | |
tree | ecb8ad161e40aa702b091da469a5b7126967e149 /src/afl-fuzz-queue.c | |
parent | 0e748ccda713708de6a501d23a58788aba9d0b03 (diff) | |
download | afl++-aa0d3785206d52c1815aff850817d55bf50f3598.tar.gz |
better cache entry algo
Diffstat (limited to 'src/afl-fuzz-queue.c')
-rw-r--r-- | src/afl-fuzz-queue.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/src/afl-fuzz-queue.c b/src/afl-fuzz-queue.c index baa80e61..4989a0ba 100644 --- a/src/afl-fuzz-queue.c +++ b/src/afl-fuzz-queue.c @@ -985,6 +985,24 @@ inline u8 *queue_testcase_get(afl_state_t *afl, struct queue_entry *q) { /* Cache full. We neet to evict one or more to map one. Get a random one which is not in use */ + if (unlikely(afl->q_testcase_cache_size + len >= afl->q_testcase_max_cache_size && + (afl->q_testcase_cache_count < afl->q_testcase_max_cache_entries && + afl->q_testcase_max_cache_count < + afl->q_testcase_max_cache_entries))) { + + if (afl->q_testcase_max_cache_count > afl->q_testcase_cache_count) { + + afl->q_testcase_max_cache_entries = + afl->q_testcase_max_cache_count + 1; + + } else { + + afl->q_testcase_max_cache_entries = afl->q_testcase_cache_count + 1; + + } + + } + do { // if the cache (MB) is not enough for the queue then this gets |