From 986e23aa3883b64e2f515924dbacc9311d515d88 Mon Sep 17 00:00:00 2001 From: Dominik Maier Date: Tue, 18 Nov 2025 20:02:37 +0100 Subject: [PATCH] Anoter Round of Clippy --- .../libafl/src/executors/hooks/inprocess.rs | 12 +- crates/libafl/src/observers/stdio.rs | 142 +++++++++--------- 2 files changed, 79 insertions(+), 75 deletions(-) diff --git a/crates/libafl/src/executors/hooks/inprocess.rs b/crates/libafl/src/executors/hooks/inprocess.rs index 7075b04cce..55ac4f7a20 100644 --- a/crates/libafl/src/executors/hooks/inprocess.rs +++ b/crates/libafl/src/executors/hooks/inprocess.rs @@ -154,7 +154,9 @@ impl HasTimeout for InProcessHooks { null_mut(), ); } - let elapsed = cur_time - self.timer().tmout_start_time; + let elapsed = cur_time + .checked_sub(self.timer().tmout_start_time) + .unwrap_or_default(); // set timer the next exec if self.timer().executions > 0 { self.timer_mut().avg_exec_time = elapsed / self.timer().executions; @@ -165,7 +167,9 @@ impl HasTimeout for InProcessHooks { return true; } - let elapsed_run = cur_time - self.timer_mut().start_time; + let elapsed_run = cur_time + .checked_sub(self.timer_mut().start_time) + .unwrap_or_default(); if elapsed_run < self.timer_mut().exec_tmout { // fp, reset timeout unsafe { @@ -177,7 +181,9 @@ impl HasTimeout for InProcessHooks { ); } if self.timer().executions > 0 { - let elapsed = cur_time - self.timer_mut().tmout_start_time; + let elapsed = cur_time + .checked_sub(self.timer_mut().tmout_start_time) + .unwrap_or_default(); self.timer_mut().avg_exec_time = elapsed / self.timer().executions; self.timer_mut().executions = 0; // It will be 1 when the exec finish } diff --git a/crates/libafl/src/observers/stdio.rs b/crates/libafl/src/observers/stdio.rs index 2ea0979b30..076701ade8 100644 --- a/crates/libafl/src/observers/stdio.rs +++ b/crates/libafl/src/observers/stdio.rs @@ -87,91 +87,89 @@ use crate::{Error, observers::Observer}; /// } /// } /// -/// fn main() { -/// let input_text = "Hello, World!"; -/// let encoded_input_text = "SGVsbG8sIFdvcmxkIQo="; +/// let input_text = "Hello, World!"; +/// let encoded_input_text = "SGVsbG8sIFdvcmxkIQo="; /// -/// let stdout_observer = StdOutObserver::new("stdout-observer".into()).unwrap(); -/// let stderr_observer = StdErrObserver::new("stderr-observer".into()).unwrap(); +/// let stdout_observer = StdOutObserver::new("stdout-observer".into()).unwrap(); +/// let stderr_observer = StdErrObserver::new("stderr-observer".into()).unwrap(); /// -/// let mut feedback = ExportStdXObserver { -/// stdout_observer: stdout_observer.handle(), -/// stderr_observer: stderr_observer.handle(), -/// }; +/// let mut feedback = ExportStdXObserver { +/// stdout_observer: stdout_observer.handle(), +/// stderr_observer: stderr_observer.handle(), +/// }; /// -/// let mut objective = (); +/// let mut objective = (); /// -/// let mut executor = CommandExecutor::builder() -/// .program("base64") -/// .arg("--decode") -/// .stdout_observer(stdout_observer.handle()) -/// .stderr_observer(stderr_observer.handle()) -/// .build(tuple_list!(stdout_observer, stderr_observer)) -/// .unwrap(); +/// let mut executor = CommandExecutor::builder() +/// .program("base64") +/// .arg("--decode") +/// .stdout_observer(stdout_observer.handle()) +/// .stderr_observer(stderr_observer.handle()) +/// .build(tuple_list!(stdout_observer, stderr_observer)) +/// .unwrap(); /// -/// let mut state = StdState::new( -/// StdRand::with_seed(current_nanos()), -/// InMemoryCorpus::new(), -/// InMemoryCorpus::new(), -/// &mut feedback, -/// &mut objective, -/// ) -/// .unwrap(); +/// let mut state = StdState::new( +/// StdRand::with_seed(current_nanos()), +/// InMemoryCorpus::new(), +/// InMemoryCorpus::new(), +/// &mut feedback, +/// &mut objective, +/// ) +/// .unwrap(); /// -/// let scheduler = QueueScheduler::new(); -/// let mut fuzzer = StdFuzzer::new(scheduler, feedback, objective); -/// let mut manager = NopEventManager::new(); +/// let scheduler = QueueScheduler::new(); +/// let mut fuzzer = StdFuzzer::new(scheduler, feedback, objective); +/// let mut manager = NopEventManager::new(); /// -/// let mut stages = tuple_list!(StdMutationalStage::new(NopMutator::new( -/// MutationResult::Mutated -/// ))); +/// let mut stages = tuple_list!(StdMutationalStage::new(NopMutator::new( +/// MutationResult::Mutated +/// ))); /// -/// state -/// .corpus_mut() -/// .add(Testcase::new(BytesInput::from( -/// encoded_input_text.as_bytes().to_vec(), -/// ))) -/// .unwrap(); +/// state +/// .corpus_mut() +/// .add(Testcase::new(BytesInput::from( +/// encoded_input_text.as_bytes().to_vec(), +/// ))) +/// .unwrap(); /// -/// let corpus_id = fuzzer -/// .fuzz_one(&mut stages, &mut executor, &mut state, &mut manager) -/// .unwrap(); +/// let corpus_id = fuzzer +/// .fuzz_one(&mut stages, &mut executor, &mut state, &mut manager) +/// .unwrap(); /// -/// unsafe { -/// assert!( -/// input_text -/// .as_bytes() -/// .iter() -/// .zip( -/// (&*(&raw const STDOUT)) -/// .as_ref() -/// .unwrap() -/// .iter() -/// .filter(|e| **e != 10) -/// ) // ignore newline chars -/// .all(|(&a, &b)| a == b) -/// ); -/// assert!((&*(&raw const STDERR)).as_ref().unwrap().is_empty()); -/// } +/// unsafe { +/// assert!( +/// input_text +/// .as_bytes() +/// .iter() +/// .zip( +/// (&*(&raw const STDOUT)) +/// .as_ref() +/// .unwrap() +/// .iter() +/// .filter(|e| **e != 10) +/// ) // ignore newline chars +/// .all(|(&a, &b)| a == b) +/// ); +/// assert!((&*(&raw const STDERR)).as_ref().unwrap().is_empty()); +/// } /// -/// state -/// .corpus() -/// .get(corpus_id) -/// .unwrap() -/// .replace(Testcase::new(BytesInput::from( -/// encoded_input_text.bytes().skip(1).collect::>(), // skip one char to make it invalid code -/// ))); +/// state +/// .corpus() +/// .get(corpus_id) +/// .unwrap() +/// .replace(Testcase::new(BytesInput::from( +/// encoded_input_text.bytes().skip(1).collect::>(), // skip one char to make it invalid code +/// ))); /// -/// fuzzer -/// .fuzz_one(&mut stages, &mut executor, &mut state, &mut manager) -/// .unwrap(); +/// fuzzer +/// .fuzz_one(&mut stages, &mut executor, &mut state, &mut manager) +/// .unwrap(); /// -/// unsafe { -/// let compare_vec: Vec = Vec::new(); -/// assert_eq!(compare_vec, *(&*(&raw const STDERR)).clone().unwrap()); -/// // stdout will still contain data, we're just checking that there is an error message -/// } -/// } +/// unsafe { +/// let compare_vec: Vec = Vec::new(); +/// assert_eq!(compare_vec, *(&*(&raw const STDERR)).clone().unwrap()); +/// // stdout will still contain data, we're just checking that there is an error message +/// } /// ``` /// #[derive(Debug, Serialize, Deserialize)]