diff --git a/libafl/src/fuzzer/mod.rs b/libafl/src/fuzzer/mod.rs index b89459645a..c61a8c3e90 100644 --- a/libafl/src/fuzzer/mod.rs +++ b/libafl/src/fuzzer/mod.rs @@ -193,11 +193,29 @@ where let mut last = current_time(); let monitor_timeout = STATS_TIMEOUT_DEFAULT; let mut done = false; - let mut tiem = 0; while !done { self.fuzz_one(stages, executor, state, manager)?; last = manager.maybe_report_progress(state, last, monitor_timeout)?; - done = state.solutions().count() > 1; + done = state.solutions().count() > 0; + } + return Ok(0); + } + + /// Fuzz until solution with limit + fn fuzz_for_solution_or_n( + &mut self, + stages: &mut ST, + executor: &mut E, + state: &mut S, + manager: &mut EM, + iters: u64, + ) -> Result { + let mut last = current_time(); + let monitor_timeout = STATS_TIMEOUT_DEFAULT; + for _ in 0..iters { + self.fuzz_one(stages, executor, state, manager)?; + last = manager.maybe_report_progress(state, last, monitor_timeout)?; + if state.solutions().count() > 0 {break;} } return Ok(0); }