Index: FuzzerDriver.cpp =================================================================== --- FuzzerDriver.cpp +++ FuzzerDriver.cpp @@ -300,6 +300,10 @@ while (true) { Unit U = FileToVector(CurrentFilePath); if (U.size() < 2) { + if (Flags.exact_artifact_path) { + CurrentFilePath = Flags.exact_artifact_path; + WriteToFile(U, CurrentFilePath); + } Printf("CRASH_MIN: '%s' is small enough\n", CurrentFilePath.c_str()); return 0; } @@ -342,7 +346,7 @@ assert(Inputs->size() == 1); std::string InputFilePath = Inputs->at(0); Unit U = FileToVector(InputFilePath); - assert(U.size() > 2); + assert(U.size() >= 2); Printf("INFO: Starting MinimizeCrashInputInternalStep: %zd\n", U.size()); Corpus->AddToCorpus(U, 0); F->SetMaxInputLen(U.size()); Index: FuzzerLoop.cpp =================================================================== --- FuzzerLoop.cpp +++ FuzzerLoop.cpp @@ -792,7 +792,7 @@ } void Fuzzer::MinimizeCrashLoop(const Unit &U) { - if (U.size() <= 2) return; + if (U.size() < 2) return; while (!TimedOut() && TotalNumberOfRuns < Options.MaxNumberOfRuns) { MD.StartMutationSequence(); memcpy(CurrentUnitData, U.data(), U.size());