diff options
Diffstat (limited to 'fuzz.c')
-rw-r--r-- | fuzz.c | 46 |
1 files changed, 12 insertions, 34 deletions
@@ -152,9 +152,6 @@ static void fuzz_setDynamicMainState(run_t* run) { return; } - LOG_I("Entering phase 2/3: Switching to Dynamic Main (Feedback Driven Mode)"); - ATOMIC_SET(run->global->feedback.state, _HF_STATE_DYNAMIC_SWITCH_TO_MAIN); - for (;;) { /* Check if all threads have already reported in for changing state */ if (ATOMIC_GET(cnt) == run->global->threads.threadsMax) { @@ -163,10 +160,10 @@ static void fuzz_setDynamicMainState(run_t* run) { if (fuzz_isTerminating()) { return; } - util_sleepForMSec(10); /* Check every 10ms */ + usleep(1000 * 10); /* Check every 10ms */ } - LOG_I("Entering phase 3/3: Dynamic Main (Feedback Driven Mode)"); + LOG_I("Entering phase 2/2: Dynamic Main"); snprintf(run->origFileName, sizeof(run->origFileName), "[DYNAMIC]"); ATOMIC_SET(run->global->feedback.state, _HF_STATE_DYNAMIC_MAIN); @@ -310,16 +307,13 @@ static bool fuzz_runVerifier(run_t* run) { } static bool fuzz_fetchInput(run_t* run) { - { - fuzzState_t st = fuzz_getState(run->global); - if (st == _HF_STATE_DYNAMIC_DRY_RUN || st == _HF_STATE_DYNAMIC_SWITCH_TO_MAIN) { - run->mutationsPerRun = 0U; - if (input_prepareStaticFile(run, /* rewind= */ false, true)) { - return true; - } - fuzz_setDynamicMainState(run); - run->mutationsPerRun = run->global->mutate.mutationsPerRun; + if (fuzz_getState(run->global) == _HF_STATE_DYNAMIC_DRY_RUN) { + run->mutationsPerRun = 0U; + if (input_prepareStaticFile(run, /* rewind= */ false)) { + return true; } + fuzz_setDynamicMainState(run); + run->mutationsPerRun = run->global->mutate.mutationsPerRun; } if (fuzz_getState(run->global) == _HF_STATE_DYNAMIC_MAIN) { @@ -328,12 +322,7 @@ static bool fuzz_fetchInput(run_t* run) { LOG_E("input_prepareFileExternally() failed"); return false; } - } else if (run->global->exe.feedbackMutateCommand) { - if (!input_prepareDynamicInput(run, false)) { - LOG_E("input_prepareFileDynamically() failed"); - return false; - } - } else if (!input_prepareDynamicInput(run, true)) { + } else if (!input_prepareDynamicInput(run)) { LOG_E("input_prepareFileDynamically() failed"); return false; } @@ -345,12 +334,7 @@ static bool fuzz_fetchInput(run_t* run) { LOG_E("input_prepareFileExternally() failed"); return false; } - } else if (run->global->exe.feedbackMutateCommand) { - if (!input_prepareStaticFile(run, true, false)) { - LOG_E("input_prepareFileDynamically() failed"); - return false; - } - } else if (!input_prepareStaticFile(run, true /* rewind */, true)) { + } else if (!input_prepareStaticFile(run, true /* rewind */)) { LOG_E("input_prepareFile() failed"); return false; } @@ -361,11 +345,6 @@ static bool fuzz_fetchInput(run_t* run) { return false; } - if (run->global->exe.feedbackMutateCommand && !input_feedbackMutateFile(run)) { - LOG_E("input_feedbackMutateFile() failed"); - return false; - } - return true; } @@ -548,7 +527,7 @@ void fuzz_threadsStart(honggfuzz_t* hfuzz) { LOG_I("Entering phase - Feedback Driven Mode (SocketFuzzer)"); hfuzz->feedback.state = _HF_STATE_DYNAMIC_MAIN; } else if (hfuzz->feedback.dynFileMethod != _HF_DYNFILE_NONE) { - LOG_I("Entering phase 1/3: Dry Run"); + LOG_I("Entering phase 1/2: Dry Run"); hfuzz->feedback.state = _HF_STATE_DYNAMIC_DRY_RUN; } else { LOG_I("Entering phase: Static"); @@ -556,8 +535,7 @@ void fuzz_threadsStart(honggfuzz_t* hfuzz) { } for (size_t i = 0; i < hfuzz->threads.threadsMax; i++) { - if (!subproc_runThread( - hfuzz, &hfuzz->threads.threads[i], fuzz_threadNew, /* joinable= */ true)) { + if (!subproc_runThread(hfuzz, &hfuzz->threads.threads[i], fuzz_threadNew)) { PLOG_F("Couldn't run a thread #%zu", i); } } |