| Index: third_party/afl/src/afl-fuzz.c
|
| diff --git a/third_party/afl/src/afl-fuzz.c b/third_party/afl/src/afl-fuzz.c
|
| index 5ca8c8f02b8f7f3d0a18d3c560f5fd5f895640c9..c113f19e04b7bf044d753aa1c99efbce291d19fc 100644
|
| --- a/third_party/afl/src/afl-fuzz.c
|
| +++ b/third_party/afl/src/afl-fuzz.c
|
| @@ -3906,7 +3906,7 @@ static void show_stats(void) {
|
|
|
| /* Honor AFL_EXIT_WHEN_DONE and AFL_BENCH_UNTIL_CRASH. */
|
|
|
| - if (!dumb_mode && cycles_wo_finds > 20 && !pending_not_fuzzed &&
|
| + if (!dumb_mode && cycles_wo_finds > 50 && !pending_not_fuzzed &&
|
| getenv("AFL_EXIT_WHEN_DONE")) stop_soon = 2;
|
|
|
| if (total_crashes && getenv("AFL_BENCH_UNTIL_CRASH")) stop_soon = 2;
|
| @@ -3980,10 +3980,10 @@ static void show_stats(void) {
|
| if (queue_cycle == 1) strcpy(tmp, cMGN); else
|
|
|
| /* Subsequent cycles, but we're still making finds. */
|
| - if (cycles_wo_finds < 3) strcpy(tmp, cYEL); else
|
| + if (cycles_wo_finds < 5) strcpy(tmp, cYEL); else
|
|
|
| /* No finds for a long time and no test cases to try. */
|
| - if (cycles_wo_finds > 20 && !pending_not_fuzzed) strcpy(tmp, cLGN);
|
| + if (cycles_wo_finds > 50 && !pending_not_fuzzed) strcpy(tmp, cLGN);
|
|
|
| /* Default: cautiously OK to stop? */
|
| else strcpy(tmp, cLBL);
|
| @@ -4881,7 +4881,7 @@ static u8 fuzz_one(char** argv) {
|
| u64 havoc_queued, orig_hit_cnt, new_hit_cnt;
|
| u32 splice_cycle = 0, perf_score = 100, orig_perf, prev_cksum, eff_cnt = 1;
|
|
|
| - u8 ret_val = 1;
|
| + u8 ret_val = 1, doing_det = 0;
|
|
|
| u8 a_collect[MAX_AUTO_EXTRA];
|
| u32 a_len = 0;
|
| @@ -5020,6 +5020,8 @@ static u8 fuzz_one(char** argv) {
|
| if (master_max && (queue_cur->exec_cksum % master_max) != master_id - 1)
|
| goto havoc_stage;
|
|
|
| + doing_det = 1;
|
| +
|
| /*********************************************
|
| * SIMPLE BITFLIP (+dictionary construction) *
|
| *********************************************/
|
| @@ -5126,8 +5128,6 @@ static u8 fuzz_one(char** argv) {
|
| stage_finds[STAGE_FLIP1] += new_hit_cnt - orig_hit_cnt;
|
| stage_cycles[STAGE_FLIP1] += stage_max;
|
|
|
| - if (queue_cur->passed_det) goto havoc_stage;
|
| -
|
| /* Two walking bits. */
|
|
|
| stage_name = "bitflip 2/1";
|
| @@ -5990,7 +5990,8 @@ havoc_stage:
|
|
|
| stage_name = "havoc";
|
| stage_short = "havoc";
|
| - stage_max = HAVOC_CYCLES * perf_score / havoc_div / 100;
|
| + stage_max = (doing_det ? HAVOC_CYCLES_INIT : HAVOC_CYCLES) *
|
| + perf_score / havoc_div / 100;
|
|
|
| } else {
|
|
|
|
|