diff --git a/fuzzers/forkserver_libafl_cc/src/main.rs b/fuzzers/forkserver_libafl_cc/src/main.rs index f4bba8d01e..f4151d4f0c 100644 --- a/fuzzers/forkserver_libafl_cc/src/main.rs +++ b/fuzzers/forkserver_libafl_cc/src/main.rs @@ -21,7 +21,7 @@ use libafl::{ use libafl_bolts::{ rands::StdRand, shmem::{ShMem, ShMemProvider, UnixShMemProvider}, - tuples::{tuple_list, Handler, MatchNameRef, Merge}, + tuples::{tuple_list, Handled, MatchNameRef, Merge}, AsSliceMut, Truncate, }; use libafl_targets::EDGES_MAP_SIZE_IN_USE; @@ -166,7 +166,7 @@ pub fn main() { // Create the executor for the forkserver let args = opt.arguments; - let observer_ref = edges_observer.handle(); + let observer_handle = edges_observer.handle(); let mut tokens = Tokens::new(); let mut executor = ForkserverExecutor::builder() @@ -182,7 +182,7 @@ pub fn main() { .unwrap(); if let Some(dynamic_map_size) = executor.coverage_map_size() { - executor.observers_mut()[&observer_ref] + executor.observers_mut()[&observer_handle] .as_mut() .truncate(dynamic_map_size); } diff --git a/fuzzers/forkserver_simple/src/main.rs b/fuzzers/forkserver_simple/src/main.rs index ac80e2da4f..2c79253e2f 100644 --- a/fuzzers/forkserver_simple/src/main.rs +++ b/fuzzers/forkserver_simple/src/main.rs @@ -22,7 +22,7 @@ use libafl_bolts::{ current_nanos, rands::StdRand, shmem::{ShMem, ShMemProvider, UnixShMemProvider}, - tuples::{tuple_list, Handler, Merge}, + tuples::{tuple_list, Handled, Merge}, AsSliceMut, Truncate, }; use nix::sys::signal::Signal; diff --git a/fuzzers/fuzzbench_forkserver_cmplog/src/main.rs b/fuzzers/fuzzbench_forkserver_cmplog/src/main.rs index 08676f9668..403296744d 100644 --- a/fuzzers/fuzzbench_forkserver_cmplog/src/main.rs +++ b/fuzzers/fuzzbench_forkserver_cmplog/src/main.rs @@ -37,7 +37,7 @@ use libafl_bolts::{ ownedref::OwnedRefMut, rands::StdRand, shmem::{ShMem, ShMemProvider, UnixShMemProvider}, - tuples::{tuple_list, Handler, Merge}, + tuples::{tuple_list, Handled, Merge}, AsSliceMut, }; use libafl_targets::{ diff --git a/fuzzers/libfuzzer_stb_image_concolic/fuzzer/src/main.rs b/fuzzers/libfuzzer_stb_image_concolic/fuzzer/src/main.rs index 26d5af417e..f68bea3abf 100644 --- a/fuzzers/libfuzzer_stb_image_concolic/fuzzer/src/main.rs +++ b/fuzzers/libfuzzer_stb_image_concolic/fuzzer/src/main.rs @@ -42,7 +42,7 @@ use libafl_bolts::{ current_nanos, rands::StdRand, shmem::{ShMem, ShMemProvider, StdShMemProvider}, - tuples::{tuple_list, Handler}, + tuples::{tuple_list, Handled}, AsSlice, AsSliceMut, }; use libafl_targets::{ diff --git a/libafl/src/corpus/minimizer.rs b/libafl/src/corpus/minimizer.rs index 9b9c2c4856..b8987a1bf6 100644 --- a/libafl/src/corpus/minimizer.rs +++ b/libafl/src/corpus/minimizer.rs @@ -7,7 +7,7 @@ use core::{hash::Hash, marker::PhantomData}; use hashbrown::{HashMap, HashSet}; use libafl_bolts::{ current_time, - tuples::{Handle, Handler}, + tuples::{Handle, Handled}, AsIter, Named, }; use num_traits::ToPrimitive; @@ -51,7 +51,7 @@ where /// Algorithm based on WMOPT: #[derive(Debug)] pub struct MapCorpusMinimizer { - obs_ref: Handle, + observer_handle: Handle, phantom: PhantomData<(E, O, T, TS)>, } @@ -70,7 +70,7 @@ where /// in the future to get observed maps from an executed input. pub fn new(obs: &C) -> Self { Self { - obs_ref: obs.handle(), + observer_handle: obs.handle(), phantom: PhantomData, } } @@ -161,7 +161,7 @@ where let seed_expr = Bool::fresh_const(&ctx, "seed"); let observers = executor.observers(); - let obs = observers[&self.obs_ref].as_ref(); + let obs = observers[&self.observer_handle].as_ref(); // Store coverage, mapping coverage map indices to hit counts (if present) and the // associated seeds for the map indices with those hit counts. diff --git a/libafl/src/events/centralized.rs b/libafl/src/events/centralized.rs index ba4d1ac05a..547c751f93 100644 --- a/libafl/src/events/centralized.rs +++ b/libafl/src/events/centralized.rs @@ -11,7 +11,7 @@ use alloc::{boxed::Box, string::String, vec::Vec}; use core::{marker::PhantomData, num::NonZeroUsize, time::Duration}; #[cfg(feature = "adaptive_serialization")] -use libafl_bolts::tuples::{Handle, Handler}; +use libafl_bolts::tuples::{Handle, Handled}; #[cfg(feature = "llmp_compression")] use libafl_bolts::{ compress::GzipCompressor, diff --git a/libafl/src/events/launcher.rs b/libafl/src/events/launcher.rs index b377364d98..46c45f1aea 100644 --- a/libafl/src/events/launcher.rs +++ b/libafl/src/events/launcher.rs @@ -33,7 +33,7 @@ use libafl_bolts::os::dup2; #[cfg(all(feature = "std", any(windows, not(feature = "fork"))))] use libafl_bolts::os::startable_self; #[cfg(feature = "adaptive_serialization")] -use libafl_bolts::tuples::{Handle, Handler}; +use libafl_bolts::tuples::{Handle, Handled}; #[cfg(all(unix, feature = "std", feature = "fork"))] use libafl_bolts::{ core_affinity::get_core_ids, diff --git a/libafl/src/events/llmp.rs b/libafl/src/events/llmp.rs index 034a9db805..e3df2f8179 100644 --- a/libafl/src/events/llmp.rs +++ b/libafl/src/events/llmp.rs @@ -33,7 +33,7 @@ use libafl_bolts::{ #[cfg(feature = "adaptive_serialization")] use libafl_bolts::{ current_time, - tuples::{Handle, Handler}, + tuples::{Handle, Handled}, }; #[cfg(feature = "std")] use libafl_bolts::{ @@ -2060,7 +2060,7 @@ mod tests { use core::sync::atomic::{compiler_fence, Ordering}; #[cfg(feature = "adaptive_serialization")] - use libafl_bolts::tuples::Handler; + use libafl_bolts::tuples::Handled; use libafl_bolts::{ llmp::{LlmpClient, LlmpSharedMap}, rands::StdRand, diff --git a/libafl/src/executors/forkserver.rs b/libafl/src/executors/forkserver.rs index 39f9d0f0d6..d82a4fb866 100644 --- a/libafl/src/executors/forkserver.rs +++ b/libafl/src/executors/forkserver.rs @@ -22,7 +22,7 @@ use libafl_bolts::{ fs::{get_unique_std_input_file, InputFile}, os::{dup2, pipes::Pipe}, shmem::{ShMem, ShMemProvider, UnixShMemProvider}, - tuples::{Handle, Handler, MatchNameRef, Prepend, RefIndexable}, + tuples::{Handle, Handled, MatchNameRef, Prepend, RefIndexable}, AsSlice, AsSliceMut, Truncate, }; use nix::{ diff --git a/libafl/src/feedbacks/concolic.rs b/libafl/src/feedbacks/concolic.rs index 7d6d6d9310..33593fb730 100644 --- a/libafl/src/feedbacks/concolic.rs +++ b/libafl/src/feedbacks/concolic.rs @@ -7,7 +7,7 @@ use alloc::borrow::Cow; use core::{fmt::Debug, marker::PhantomData}; use libafl_bolts::{ - tuples::{Handle, Handler, MatchNameRef}, + tuples::{Handle, Handled, MatchNameRef}, Named, }; @@ -28,7 +28,7 @@ use crate::{ /// Requires a [`ConcolicObserver`] to observe the concolic trace. #[derive(Debug)] pub struct ConcolicFeedback<'map, S> { - obs_ref: Handle>, + observer_handle: Handle>, phantom: PhantomData, } @@ -38,7 +38,7 @@ impl<'map, S> ConcolicFeedback<'map, S> { #[must_use] pub fn from_observer(observer: &ConcolicObserver<'map>) -> Self { Self { - obs_ref: observer.handle(), + observer_handle: observer.handle(), phantom: PhantomData, } } @@ -46,7 +46,7 @@ impl<'map, S> ConcolicFeedback<'map, S> { impl Named for ConcolicFeedback<'_, S> { fn name(&self) -> &Cow<'static, str> { - self.obs_ref.name() + self.observer_handle.name() } } @@ -82,7 +82,7 @@ where EM: EventFirer, { if let Some(metadata) = observers - .get(&self.obs_ref) + .get(&self.observer_handle) .map(ConcolicObserver::create_metadata_from_current_map) { testcase.metadata_map_mut().insert(metadata); diff --git a/libafl/src/feedbacks/differential.rs b/libafl/src/feedbacks/differential.rs index 5b69c54d9c..1f70d0efd4 100644 --- a/libafl/src/feedbacks/differential.rs +++ b/libafl/src/feedbacks/differential.rs @@ -8,7 +8,7 @@ use core::{ }; use libafl_bolts::{ - tuples::{Handle, Handler, MatchName, MatchNameRef}, + tuples::{Handle, Handled, MatchName, MatchNameRef}, Named, }; use serde::{Deserialize, Serialize}; diff --git a/libafl/src/feedbacks/list.rs b/libafl/src/feedbacks/list.rs index c433fc372c..0f5e89d200 100644 --- a/libafl/src/feedbacks/list.rs +++ b/libafl/src/feedbacks/list.rs @@ -3,7 +3,7 @@ use core::{fmt::Debug, hash::Hash}; use hashbrown::HashSet; use libafl_bolts::{ - tuples::{Handle, Handler, MatchNameRef}, + tuples::{Handle, Handled, MatchNameRef}, Error, HasRefCnt, Named, }; use serde::{de::DeserializeOwned, Deserialize, Serialize}; @@ -73,7 +73,7 @@ pub struct ListFeedback where T: Hash + Eq, { - obs_ref: Handle>, + observer_handle: Handle>, novelty: HashSet, } @@ -106,7 +106,7 @@ where OT: ObserversTuple, { // TODO Replace with match_name_type when stable - let observer = observers.get(&self.obs_ref).unwrap(); + let observer = observers.get(&self.observer_handle).unwrap(); // TODO register the list content in a testcase metadata self.novelty.clear(); // can't fail @@ -151,7 +151,7 @@ where { #[inline] fn name(&self) -> &Cow<'static, str> { - self.obs_ref.name() + self.observer_handle.name() } } @@ -163,7 +163,7 @@ where #[must_use] pub fn new(observer: &ListObserver) -> Self { Self { - obs_ref: observer.handle(), + observer_handle: observer.handle(), novelty: HashSet::::new(), } } diff --git a/libafl/src/feedbacks/map.rs b/libafl/src/feedbacks/map.rs index 14294406fe..e80053326d 100644 --- a/libafl/src/feedbacks/map.rs +++ b/libafl/src/feedbacks/map.rs @@ -12,7 +12,7 @@ use core::{ #[rustversion::nightly] use libafl_bolts::AsSlice; use libafl_bolts::{ - tuples::{Handle, Handler, MatchNameRef}, + tuples::{Handle, Handled, MatchNameRef}, AsIter, HasRefCnt, Named, }; use num_traits::PrimInt; @@ -22,7 +22,7 @@ use crate::{ corpus::Testcase, events::{Event, EventFirer}, executors::ExitKind, - feedbacks::{Feedback, HasObserverReference}, + feedbacks::{Feedback, HasObserverHandle}, inputs::UsesInput, monitors::{AggregatorOps, UserStats, UserStatsValue}, observers::{CanTrack, MapObserver, Observer, ObserversTuple}, @@ -660,7 +660,7 @@ impl Named for MapFeedback { } } -impl HasObserverReference for MapFeedback +impl HasObserverHandle for MapFeedback where O: Named, C: AsRef, @@ -668,7 +668,7 @@ where type Observer = C; #[inline] - fn observer_ref(&self) -> &Handle { + fn observer_handle(&self) -> &Handle { &self.map_ref } } diff --git a/libafl/src/feedbacks/mod.rs b/libafl/src/feedbacks/mod.rs index 83b8598982..c997ebabb3 100644 --- a/libafl/src/feedbacks/mod.rs +++ b/libafl/src/feedbacks/mod.rs @@ -14,7 +14,7 @@ use core::{ pub use concolic::ConcolicFeedback; pub use differential::DiffFeedback; use libafl_bolts::{ - tuples::{Handle, Handler, MatchNameRef}, + tuples::{Handle, Handled, MatchNameRef}, Named, }; pub use list::*; @@ -138,12 +138,12 @@ where } /// Has an associated observer name (mostly used to retrieve the observer with `MatchName` from an `ObserverTuple`) -pub trait HasObserverReference { +pub trait HasObserverHandle { /// The observer for which we hold a reference type Observer: ?Sized; /// The name associated with the observer - fn observer_ref(&self) -> &Handle; + fn observer_handle(&self) -> &Handle; } /// A combined feedback consisting of multiple [`Feedback`]s @@ -934,7 +934,7 @@ pub type TimeoutFeedbackFactory = DefaultFeedbackFactory; /// It decides, if the given [`TimeObserver`] value of a run is interesting. #[derive(Serialize, Deserialize, Clone, Debug)] pub struct TimeFeedback { - obs_ref: Handle, + observer_handle: Handle, } impl Feedback for TimeFeedback @@ -971,7 +971,7 @@ where OT: ObserversTuple, EM: EventFirer, { - let observer = observers.get(&self.obs_ref).unwrap(); + let observer = observers.get(&self.observer_handle).unwrap(); *testcase.exec_time_mut() = *observer.last_runtime(); Ok(()) } @@ -986,7 +986,7 @@ where impl Named for TimeFeedback { #[inline] fn name(&self) -> &Cow<'static, str> { - self.obs_ref.name() + self.observer_handle.name() } } @@ -995,7 +995,7 @@ impl TimeFeedback { #[must_use] pub fn new(observer: &TimeObserver) -> Self { Self { - obs_ref: observer.handle(), + observer_handle: observer.handle(), } } } diff --git a/libafl/src/feedbacks/new_hash_feedback.rs b/libafl/src/feedbacks/new_hash_feedback.rs index 4b90b18422..b52806801c 100644 --- a/libafl/src/feedbacks/new_hash_feedback.rs +++ b/libafl/src/feedbacks/new_hash_feedback.rs @@ -5,7 +5,7 @@ use std::{fmt::Debug, marker::PhantomData}; use hashbrown::HashSet; use libafl_bolts::{ - tuples::{Handle, Handler, MatchNameRef}, + tuples::{Handle, Handled, MatchNameRef}, Named, }; use serde::{Deserialize, Serialize}; @@ -13,7 +13,7 @@ use serde::{Deserialize, Serialize}; use crate::{ events::EventFirer, executors::ExitKind, - feedbacks::{Feedback, HasObserverReference}, + feedbacks::{Feedback, HasObserverHandle}, inputs::UsesInput, observers::{ObserverWithHashField, ObserversTuple}, state::State, @@ -145,11 +145,11 @@ impl Named for NewHashFeedback { } } -impl HasObserverReference for NewHashFeedback { +impl HasObserverHandle for NewHashFeedback { type Observer = O; #[inline] - fn observer_ref(&self) -> &Handle { + fn observer_handle(&self) -> &Handle { &self.o_ref } } diff --git a/libafl/src/feedbacks/stdio.rs b/libafl/src/feedbacks/stdio.rs index bda7619421..6c8137a515 100644 --- a/libafl/src/feedbacks/stdio.rs +++ b/libafl/src/feedbacks/stdio.rs @@ -4,7 +4,7 @@ use alloc::{borrow::Cow, string::String}; use libafl_bolts::{ impl_serdeany, - tuples::{Handle, Handler, MatchNameRef}, + tuples::{Handle, Handled, MatchNameRef}, Named, }; use serde::{Deserialize, Serialize}; diff --git a/libafl/src/schedulers/mod.rs b/libafl/src/schedulers/mod.rs index 212f97a495..2a0b65df48 100644 --- a/libafl/src/schedulers/mod.rs +++ b/libafl/src/schedulers/mod.rs @@ -82,7 +82,7 @@ where fn set_last_hash(&mut self, value: usize); /// Get the observer map observer name - fn map_observer_ref(&self) -> &Handle; + fn map_observer_handle(&self) -> &Handle; /// Called when a [`Testcase`] is added to the corpus fn on_add_metadata(&self, state: &mut Self::State, idx: CorpusId) -> Result<(), Error> { @@ -121,7 +121,7 @@ where OT: ObserversTuple, { let observer = observers - .get(self.map_observer_ref()) + .get(self.map_observer_handle()) .ok_or_else(|| Error::key_not_found("MapObserver not found".to_string()))? .as_ref(); diff --git a/libafl/src/schedulers/powersched.rs b/libafl/src/schedulers/powersched.rs index d131a66d50..0601e06104 100644 --- a/libafl/src/schedulers/powersched.rs +++ b/libafl/src/schedulers/powersched.rs @@ -4,7 +4,7 @@ use alloc::vec::Vec; use core::{marker::PhantomData, time::Duration}; use libafl_bolts::{ - tuples::{Handle, Handler}, + tuples::{Handle, Handled}, Named, }; use serde::{Deserialize, Serialize}; @@ -173,7 +173,7 @@ pub enum PowerSchedule { #[derive(Clone, Debug)] pub struct PowerQueueScheduler { strat: PowerSchedule, - map_observer_ref: Handle, + map_observer_handle: Handle, last_hash: usize, phantom: PhantomData<(O, S)>, } @@ -226,8 +226,8 @@ where self.last_hash = hash; } - fn map_observer_ref(&self) -> &Handle { - &self.map_observer_ref + fn map_observer_handle(&self) -> &Handle { + &self.map_observer_handle } } @@ -305,7 +305,7 @@ where } PowerQueueScheduler { strat, - map_observer_ref: map_observer.handle(), + map_observer_handle: map_observer.handle(), last_hash: 0, phantom: PhantomData, } diff --git a/libafl/src/schedulers/weighted.rs b/libafl/src/schedulers/weighted.rs index b6c7719f42..79dce6a5a9 100644 --- a/libafl/src/schedulers/weighted.rs +++ b/libafl/src/schedulers/weighted.rs @@ -6,7 +6,7 @@ use core::marker::PhantomData; use hashbrown::HashMap; use libafl_bolts::{ rands::Rand, - tuples::{Handle, Handler}, + tuples::{Handle, Handled}, Named, }; use serde::{Deserialize, Serialize}; @@ -98,7 +98,7 @@ libafl_bolts::impl_serdeany!(WeightedScheduleMetadata); pub struct WeightedScheduler { table_invalidated: bool, strat: Option, - map_observer_ref: Handle, + map_observer_handle: Handle, last_hash: usize, phantom: PhantomData<(F, O, S)>, } @@ -124,7 +124,7 @@ where Self { strat, - map_observer_ref: map_observer.handle(), + map_observer_handle: map_observer.handle(), last_hash: 0, table_invalidated: true, phantom: PhantomData, @@ -274,8 +274,8 @@ where self.last_hash = hash; } - fn map_observer_ref(&self) -> &Handle { - &self.map_observer_ref + fn map_observer_handle(&self) -> &Handle { + &self.map_observer_handle } } diff --git a/libafl/src/stages/calibrate.rs b/libafl/src/stages/calibrate.rs index 1a4c796a93..867000e745 100644 --- a/libafl/src/stages/calibrate.rs +++ b/libafl/src/stages/calibrate.rs @@ -12,7 +12,7 @@ use crate::{ corpus::{Corpus, SchedulerTestcaseMetadata}, events::{Event, EventFirer, LogSeverity}, executors::{Executor, ExitKind, HasObservers}, - feedbacks::{map::MapFeedbackMetadata, HasObserverReference}, + feedbacks::{map::MapFeedbackMetadata, HasObserverHandle}, fuzzer::Evaluator, inputs::UsesInput, monitors::{AggregatorOps, UserStats, UserStatsValue}, @@ -63,7 +63,7 @@ impl UnstableEntriesMetadata { /// The calibration stage will measure the average exec time and the target's stability for this input. #[derive(Clone, Debug)] pub struct CalibrationStage { - map_observer_ref: Handle, + map_observer_handle: Handle, map_name: Cow<'static, str>, stage_max: usize, /// If we should track stability @@ -144,7 +144,7 @@ where .observers_mut() .post_exec_all(state, &input, &exit_kind)?; - let map_first = &executor.observers()[&self.map_observer_ref] + let map_first = &executor.observers()[&self.map_observer_handle] .as_ref() .to_vec(); @@ -185,7 +185,7 @@ where .post_exec_all(state, &input, &exit_kind)?; if self.track_stability { - let map = &executor.observers()[&self.map_observer_ref] + let map = &executor.observers()[&self.map_observer_handle] .as_ref() .to_vec(); @@ -240,7 +240,7 @@ where // If weighted scheduler or powerscheduler is used, update it if state.has_metadata::() { let observers = executor.observers(); - let map = observers[&self.map_observer_ref].as_ref(); + let map = observers[&self.map_observer_handle].as_ref(); let mut bitmap_size = map.count_bytes(); assert!(bitmap_size != 0); @@ -340,10 +340,10 @@ where #[must_use] pub fn new(map_feedback: &F) -> Self where - F: HasObserverReference + Named, + F: HasObserverHandle + Named, { Self { - map_observer_ref: map_feedback.observer_ref().clone(), + map_observer_handle: map_feedback.observer_handle().clone(), map_name: map_feedback.name().clone(), stage_max: CAL_STAGE_START, track_stability: true, @@ -356,10 +356,10 @@ where #[must_use] pub fn ignore_stability(map_feedback: &F) -> Self where - F: HasObserverReference + Named, + F: HasObserverHandle + Named, { Self { - map_observer_ref: map_feedback.observer_ref().clone(), + map_observer_handle: map_feedback.observer_handle().clone(), map_name: map_feedback.name().clone(), stage_max: CAL_STAGE_START, track_stability: false, diff --git a/libafl/src/stages/colorization.rs b/libafl/src/stages/colorization.rs index e57420f9b3..627f556162 100644 --- a/libafl/src/stages/colorization.rs +++ b/libafl/src/stages/colorization.rs @@ -4,7 +4,7 @@ use core::{cmp::Ordering, fmt::Debug, marker::PhantomData, ops::Range}; use libafl_bolts::{ rands::Rand, - tuples::{Handle, Handler}, + tuples::{Handle, Handled}, Named, }; use serde::{Deserialize, Serialize}; @@ -55,7 +55,7 @@ impl Ord for Earlier { /// The mutational stage using power schedules #[derive(Clone, Debug)] pub struct ColorizationStage { - map_observer_ref: Handle, + map_observer_handle: Handle, #[allow(clippy::type_complexity)] phantom: PhantomData<(E, EM, O, E, Z)>, } @@ -72,7 +72,7 @@ where E: UsesState, { fn name(&self) -> &Cow<'static, str> { - self.map_observer_ref.name() + self.map_observer_handle.name() } } @@ -96,7 +96,7 @@ where manager: &mut EM, ) -> Result<(), Error> { // Run with the mutated input - Self::colorize(fuzzer, executor, state, manager, &self.map_observer_ref)?; + Self::colorize(fuzzer, executor, state, manager, &self.map_observer_handle)?; Ok(()) } @@ -168,7 +168,7 @@ where executor: &mut E, state: &mut E::State, manager: &mut EM, - obs_ref: &Handle, + observer_handle: &Handle, ) -> Result { let mut input = state.current_input_cloned()?; // The backup of the input @@ -182,8 +182,14 @@ where // First, run orig_input once and get the original hash // Idea: No need to do this every time - let orig_hash = - Self::get_raw_map_hash_run(fuzzer, executor, state, manager, consumed_input, obs_ref)?; + let orig_hash = Self::get_raw_map_hash_run( + fuzzer, + executor, + state, + manager, + consumed_input, + observer_handle, + )?; let changed_bytes = changed.bytes_mut(); let input_len = changed_bytes.len(); @@ -228,7 +234,7 @@ where state, manager, consumed_input, - obs_ref, + observer_handle, )?; if orig_hash == changed_hash { @@ -301,7 +307,7 @@ where /// Creates a new [`ColorizationStage`] pub fn new(map_observer: &C) -> Self { Self { - map_observer_ref: map_observer.handle(), + map_observer_handle: map_observer.handle(), phantom: PhantomData, } } @@ -313,14 +319,14 @@ where state: &mut E::State, manager: &mut EM, input: E::Input, - obs_ref: &Handle, + observer_handle: &Handle, ) -> Result { executor.observers_mut().pre_exec_all(state, &input)?; let exit_kind = executor.run_target(fuzzer, state, manager, &input)?; let observers = executor.observers(); - let observer = observers[obs_ref].as_ref(); + let observer = observers[observer_handle].as_ref(); let hash = observer.hash_simple() as usize; diff --git a/libafl/src/stages/concolic.rs b/libafl/src/stages/concolic.rs index 54e8f1dd10..118bfc6464 100644 --- a/libafl/src/stages/concolic.rs +++ b/libafl/src/stages/concolic.rs @@ -39,7 +39,7 @@ use crate::{ #[derive(Clone, Debug)] pub struct ConcolicTracingStage<'a, EM, TE, Z> { inner: TracingStage, - obs_ref: Handle>, + observer_handle: Handle>, } impl UsesState for ConcolicTracingStage<'_, EM, TE, Z> @@ -73,7 +73,7 @@ where manager: &mut EM, ) -> Result<(), Error> { self.inner.trace(fuzzer, state, manager)?; - if let Some(observer) = self.inner.executor().observers().get(&self.obs_ref) { + if let Some(observer) = self.inner.executor().observers().get(&self.observer_handle) { let metadata = observer.create_metadata_from_current_map(); state .current_testcase_mut()? @@ -95,8 +95,14 @@ where impl<'a, EM, TE, Z> ConcolicTracingStage<'a, EM, TE, Z> { /// Creates a new default tracing stage using the given [`Executor`], observing traces from a /// [`ConcolicObserver`] with the given name. - pub fn new(inner: TracingStage, obs_ref: Handle>) -> Self { - Self { inner, obs_ref } + pub fn new( + inner: TracingStage, + observer_handle: Handle>, + ) -> Self { + Self { + inner, + observer_handle, + } } } diff --git a/libafl/src/stages/generalization.rs b/libafl/src/stages/generalization.rs index 8f69e53380..40d65707ee 100644 --- a/libafl/src/stages/generalization.rs +++ b/libafl/src/stages/generalization.rs @@ -4,7 +4,7 @@ use alloc::{borrow::Cow, vec::Vec}; use core::{fmt::Debug, marker::PhantomData}; use libafl_bolts::{ - tuples::{Handle, Handler}, + tuples::{Handle, Handled}, AsSlice, Named, }; @@ -43,7 +43,7 @@ fn find_next_char(list: &[Option], mut idx: usize, ch: u8) -> usize { /// A stage that runs a tracer executor #[derive(Clone, Debug)] pub struct GeneralizationStage { - map_observer_ref: Handle, + map_observer_handle: Handle, #[allow(clippy::type_complexity)] phantom: PhantomData<(EM, O, OT, Z)>, } @@ -347,7 +347,7 @@ where pub fn new(map_observer: &C) -> Self { require_novelties_tracking!("GeneralizationStage", C); Self { - map_observer_ref: map_observer.handle(), + map_observer_handle: map_observer.handle(), phantom: PhantomData, } } @@ -381,7 +381,7 @@ where .post_exec_all(state, input, &exit_kind)?; mark_feature_time!(state, PerfFeature::PostExecObservers); - let cnt = executor.observers()[&self.map_observer_ref] + let cnt = executor.observers()[&self.map_observer_handle] .as_ref() .how_many_set(novelties); diff --git a/libafl/src/stages/tmin.rs b/libafl/src/stages/tmin.rs index 26f982893e..01d2f28715 100644 --- a/libafl/src/stages/tmin.rs +++ b/libafl/src/stages/tmin.rs @@ -5,7 +5,7 @@ use core::{borrow::BorrowMut, fmt::Debug, hash::Hash, marker::PhantomData}; use ahash::RandomState; use libafl_bolts::{ - tuples::{Handle, Handler, MatchNameRef}, + tuples::{Handle, Handled, MatchNameRef}, HasLen, Named, }; @@ -13,7 +13,7 @@ use crate::{ corpus::{Corpus, HasCurrentCorpusIdx, Testcase}, events::EventFirer, executors::{Executor, ExitKind, HasObservers}, - feedbacks::{Feedback, FeedbackFactory, HasObserverReference}, + feedbacks::{Feedback, FeedbackFactory, HasObserverHandle}, inputs::UsesInput, mark_feature_time, mutators::{MutationResult, Mutator}, @@ -364,10 +364,10 @@ impl Named for MapEqualityFeedback { } } -impl HasObserverReference for MapEqualityFeedback { +impl HasObserverHandle for MapEqualityFeedback { type Observer = C; - fn observer_ref(&self) -> &Handle { + fn observer_handle(&self) -> &Handle { &self.map_ref } } @@ -391,7 +391,7 @@ where OT: ObserversTuple, { let obs = observers - .get(self.observer_ref()) + .get(self.observer_handle()) .expect("Should have been provided valid observer name."); Ok(obs.as_ref().hash_simple() == self.orig_hash) } @@ -407,7 +407,7 @@ pub struct MapEqualityFactory { impl MapEqualityFactory where M: MapObserver, - C: AsRef + Handler, + C: AsRef + Handled, { /// Creates a new map equality feedback for the given observer pub fn new(obs: &C) -> Self { @@ -418,10 +418,10 @@ where } } -impl HasObserverReference for MapEqualityFactory { +impl HasObserverHandle for MapEqualityFactory { type Observer = C; - fn observer_ref(&self) -> &Handle { + fn observer_handle(&self) -> &Handle { &self.map_ref } } @@ -430,13 +430,13 @@ impl FeedbackFactory, S, OT> for MapEqualityFactory where M: MapObserver, - C: AsRef + Handler, + C: AsRef + Handled, OT: ObserversTuple, S: State + Debug, { fn create_feedback(&self, observers: &OT) -> MapEqualityFeedback { let obs = observers - .get(self.observer_ref()) + .get(self.observer_handle()) .expect("Should have been provided valid observer name."); MapEqualityFeedback { name: Cow::from("MapEq"), diff --git a/libafl_bolts/src/tuples.rs b/libafl_bolts/src/tuples.rs index a892ba24ff..31593b781f 100644 --- a/libafl_bolts/src/tuples.rs +++ b/libafl_bolts/src/tuples.rs @@ -495,11 +495,11 @@ where } } -/// Structs that has `Handle ` -/// You should use this when you want to avoid specifying types using `match_name_type_mut` +/// Structs that have a [`Handle`] to reference this element by, in maps. +/// You should use this when you want to avoid specifying types. #[cfg(feature = "alloc")] -pub trait Handler: Named { - /// Return the `Handle ` +pub trait Handled: Named { + /// Return the [`Handle`] fn handle(&self) -> Handle { Handle { name: Named::name(self).clone(), @@ -509,7 +509,7 @@ pub trait Handler: Named { } #[cfg(feature = "alloc")] -impl Handler for N where N: Named {} +impl Handled for N where N: Named {} /// Object with the type T and the name associated with its concrete value #[derive(Serialize, Deserialize)] diff --git a/libafl_frida/src/asan/errors.rs b/libafl_frida/src/asan/errors.rs index c70e169486..a6d4482dca 100644 --- a/libafl_frida/src/asan/errors.rs +++ b/libafl_frida/src/asan/errors.rs @@ -24,7 +24,7 @@ use libafl::{ }; use libafl_bolts::{ ownedref::OwnedPtr, - tuples::{Handle, Handler, MatchNameRef}, + tuples::{Handle, Handled, MatchNameRef}, Named, SerdeAny, }; use serde::{Deserialize, Serialize}; @@ -646,7 +646,7 @@ impl AsanErrorsObserver { #[derive(Serialize, Deserialize, Clone, Debug)] pub struct AsanErrorsFeedback { errors: Option, - obs_ref: Handle, + observer_handle: Handle, phantom: PhantomData, } @@ -669,7 +669,7 @@ where OT: ObserversTuple, { let observer = observers - .get(&self.obs_ref) + .get(&self.observer_handle) .expect("An AsanErrorsFeedback needs an AsanErrorsObserver"); let errors = observer.errors(); if errors.is_empty() { @@ -706,7 +706,7 @@ where impl Named for AsanErrorsFeedback { #[inline] fn name(&self) -> &Cow<'static, str> { - self.obs_ref.name() + self.observer_handle.name() } } @@ -716,7 +716,7 @@ impl AsanErrorsFeedback { pub fn new(obs: &AsanErrorsObserver) -> Self { Self { errors: None, - obs_ref: obs.handle(), + observer_handle: obs.handle(), phantom: PhantomData, } } diff --git a/libafl_qemu/src/helpers/calls.rs b/libafl_qemu/src/helpers/calls.rs index ef192b7a85..1bd6c19412 100644 --- a/libafl_qemu/src/helpers/calls.rs +++ b/libafl_qemu/src/helpers/calls.rs @@ -6,7 +6,7 @@ use libafl::{ inputs::{Input, UsesInput}, observers::{stacktrace::BacktraceObserver, ObserversTuple}, }; -use libafl_bolts::tuples::{Handle, Handler, MatchFirstType, MatchNameRef}; +use libafl_bolts::tuples::{Handle, Handled, MatchFirstType, MatchNameRef}; use libafl_qemu_sys::GuestAddr; use thread_local::ThreadLocal; @@ -439,7 +439,7 @@ where #[derive(Debug)] pub struct OnCrashBacktraceCollector<'a> { callstack_hash: u64, - obs_ref: Handle>, + observer_handle: Handle>, } impl<'a> OnCrashBacktraceCollector<'a> { @@ -447,7 +447,7 @@ impl<'a> OnCrashBacktraceCollector<'a> { pub fn new(observer: &BacktraceObserver<'a>) -> Self { Self { callstack_hash: 0, - obs_ref: observer.handle(), + observer_handle: observer.handle(), } } @@ -511,7 +511,7 @@ where S: UsesInput, { let observer = observers - .get_mut(&self.obs_ref) + .get_mut(&self.observer_handle) .expect("A OnCrashBacktraceCollector needs a BacktraceObserver"); observer.fill_external(self.callstack_hash, exit_kind); } diff --git a/libafl_sugar/src/forkserver.rs b/libafl_sugar/src/forkserver.rs index cc3a4d7b65..c6a2eba63d 100644 --- a/libafl_sugar/src/forkserver.rs +++ b/libafl_sugar/src/forkserver.rs @@ -25,7 +25,7 @@ use libafl_bolts::{ core_affinity::Cores, rands::StdRand, shmem::{ShMem, ShMemProvider, UnixShMemProvider}, - tuples::{tuple_list, Handler, Merge}, + tuples::{tuple_list, Handled, Merge}, AsSliceMut, }; use typed_builder::TypedBuilder; diff --git a/libafl_sugar/src/inmemory.rs b/libafl_sugar/src/inmemory.rs index 49269d1230..7c7f8b5d20 100644 --- a/libafl_sugar/src/inmemory.rs +++ b/libafl_sugar/src/inmemory.rs @@ -29,7 +29,7 @@ use libafl_bolts::{ ownedref::OwnedMutSlice, rands::StdRand, shmem::{ShMemProvider, StdShMemProvider}, - tuples::{tuple_list, Handler, Merge}, + tuples::{tuple_list, Handled, Merge}, AsSlice, }; use libafl_targets::{edges_map_mut_ptr, CmpLogObserver}; diff --git a/libafl_sugar/src/qemu.rs b/libafl_sugar/src/qemu.rs index 236fa63fde..c3b6816028 100644 --- a/libafl_sugar/src/qemu.rs +++ b/libafl_sugar/src/qemu.rs @@ -32,7 +32,7 @@ use libafl_bolts::{ ownedref::OwnedMutSlice, rands::StdRand, shmem::{ShMemProvider, StdShMemProvider}, - tuples::{tuple_list, Handler, Merge}, + tuples::{tuple_list, Handled, Merge}, AsSlice, }; pub use libafl_qemu::qemu::Qemu; diff --git a/libafl_targets/src/cmps/stages/aflpptracing.rs b/libafl_targets/src/cmps/stages/aflpptracing.rs index 56284643b0..310ab95e30 100644 --- a/libafl_targets/src/cmps/stages/aflpptracing.rs +++ b/libafl_targets/src/cmps/stages/aflpptracing.rs @@ -25,7 +25,7 @@ where TE: UsesState, { tracer_executor: TE, - cmplog_observer_ref: Option>>, + cmplog_observer_handle: Option>>, #[allow(clippy::type_complexity)] phantom: PhantomData<(EM, TE, Z)>, } @@ -67,8 +67,12 @@ where // First run with the un-mutated input let unmutated_input = state.current_input_cloned()?; - if let Some(obs_ref) = &self.cmplog_observer_ref { - if let Some(ob) = self.tracer_executor.observers_mut().get_mut(obs_ref) { + if let Some(observer_handle) = &self.cmplog_observer_handle { + if let Some(ob) = self + .tracer_executor + .observers_mut() + .get_mut(observer_handle) + { // This is not the original input, // Set it to false ob.set_original(true); @@ -97,8 +101,12 @@ where None => return Err(Error::unknown("No metadata found")), }; - if let Some(obs_ref) = &self.cmplog_observer_ref { - if let Some(ob) = self.tracer_executor.observers_mut().get_mut(obs_ref) { + if let Some(observer_handle) = &self.cmplog_observer_handle { + if let Some(ob) = self + .tracer_executor + .observers_mut() + .get_mut(observer_handle) + { // This is not the original input, // Set it to false ob.set_original(false); @@ -142,7 +150,7 @@ where /// Creates a new default stage pub fn new(tracer_executor: TE) -> Self { Self { - cmplog_observer_ref: None, + cmplog_observer_handle: None, tracer_executor, phantom: PhantomData, } @@ -151,10 +159,10 @@ where /// With cmplog observer pub fn with_cmplog_observer( tracer_executor: TE, - obs_ref: Handle>, + observer_handle: Handle>, ) -> Self { Self { - cmplog_observer_ref: Some(obs_ref), + cmplog_observer_handle: Some(observer_handle), tracer_executor, phantom: PhantomData, }