diff --git a/fuzzers/frida_libpng/src/fuzzer.rs b/fuzzers/frida_libpng/src/fuzzer.rs index 0b83fdcd67..fac6bb3a4f 100644 --- a/fuzzers/frida_libpng/src/fuzzer.rs +++ b/fuzzers/frida_libpng/src/fuzzer.rs @@ -294,7 +294,7 @@ unsafe fn fuzz( let shmem_provider = StdShMemProvider::new()?; - let mut run_client = |state: Option>, mut mgr| { + let mut run_client = |state: Option>, mut mgr, _core_id| { // The restarting state will spawn the same process again as child, then restarted it each time it crashes. let lib = libloading::Library::new(module_name).unwrap(); diff --git a/fuzzers/generic_inmemory/src/lib.rs b/fuzzers/generic_inmemory/src/lib.rs index 9080d7dead..30e1111c43 100644 --- a/fuzzers/generic_inmemory/src/lib.rs +++ b/fuzzers/generic_inmemory/src/lib.rs @@ -83,7 +83,7 @@ pub fn libafl_main() { let stats = MultiStats::new(|s| println!("{}", s)); - let mut run_client = |state: Option>, mut mgr| { + let mut run_client = |state: Option>, mut mgr, _core_id| { // Create an observation channel using the coverage map let edges = unsafe { &mut EDGES_MAP[0..MAX_EDGES_NUM] }; let edges_observer = HitcountsMapObserver::new(StdMapObserver::new("edges", edges)); diff --git a/fuzzers/libfuzzer_libpng_launcher/src/lib.rs b/fuzzers/libfuzzer_libpng_launcher/src/lib.rs index 1e8a97c31a..8bc07bd71c 100644 --- a/fuzzers/libfuzzer_libpng_launcher/src/lib.rs +++ b/fuzzers/libfuzzer_libpng_launcher/src/lib.rs @@ -60,7 +60,7 @@ pub fn libafl_main() { let stats = MultiStats::new(|s| println!("{}", s)); - let mut run_client = |state: Option>, mut restarting_mgr| { + let mut run_client = |state: Option>, mut restarting_mgr, _core_id| { let corpus_dirs = &[PathBuf::from("./corpus")]; let objective_dir = PathBuf::from("./crashes"); diff --git a/libafl/src/bolts/launcher.rs b/libafl/src/bolts/launcher.rs index 18e55cbe4a..9f6f68c202 100644 --- a/libafl/src/bolts/launcher.rs +++ b/libafl/src/bolts/launcher.rs @@ -33,8 +33,11 @@ use typed_builder::TypedBuilder; /// The Launcher client callback type reference #[cfg(feature = "std")] -pub type LauncherClientFnRef<'a, I, OT, S, SP> = - &'a mut dyn FnMut(Option, LlmpRestartingEventManager) -> Result<(), Error>; +pub type LauncherClientFnRef<'a, I, OT, S, SP> = &'a mut dyn FnMut( + Option, + LlmpRestartingEventManager, + usize, +) -> Result<(), Error>; const _AFL_LAUNCHER_CLIENT: &str = "AFL_LAUNCHER_CLIENT"; /// Provides a Launcher, which can be used to launch a fuzzing run on a specified list of cores @@ -100,7 +103,7 @@ where .map(|filename| File::create(filename).unwrap()); // Spawn clients - for (id, bind_to) in core_ids.iter().enumerate().take(num_cores) { + for (index, (id, bind_to)) in core_ids.iter().enumerate().take(num_cores).enumerate() { if self.cores.iter().any(|&x| x == id) { self.shmem_provider.pre_fork()?; match unsafe { fork() }? { @@ -115,7 +118,7 @@ where self.shmem_provider.post_fork(true)?; #[cfg(feature = "std")] - std::thread::sleep(std::time::Duration::from_secs((id + 1) as u64)); + std::thread::sleep(std::time::Duration::from_secs((index + 1) as u64)); #[cfg(feature = "std")] if file.is_some() { @@ -133,7 +136,7 @@ where .build() .launch()?; - (self.run_client)(state, mgr)?; + (self.run_client)(state, mgr, bind_to.id)?; break; } }; @@ -200,7 +203,7 @@ where .build() .launch()?; - (self.run_client)(state, mgr)?; + (self.run_client)(state, mgr, core_conf.parse()?)?; unreachable!("Fuzzer client code should never get here!"); } diff --git a/libafl_sugar/src/inmemory.rs b/libafl_sugar/src/inmemory.rs index 98109e6881..67042ec13f 100644 --- a/libafl_sugar/src/inmemory.rs +++ b/libafl_sugar/src/inmemory.rs @@ -63,7 +63,7 @@ where /// clusters. #[builder(default = None, setter(strip_option))] remote_broker_addr: Option, - /// Bytes harness + /// Bytes harness #[builder(setter(strip_option))] harness: Option, } @@ -99,7 +99,7 @@ where let stats = MultiStats::new(|s| println!("{}", s)); - let mut run_client = |state: Option>, mut mgr| { + let mut run_client = |state: Option>, mut mgr, _core_id| { // Create an observation channel using the coverage map let edges = unsafe { &mut EDGES_MAP[0..MAX_EDGES_NUM] }; let edges_observer = HitcountsMapObserver::new(StdMapObserver::new("edges", edges)); diff --git a/libafl_sugar/src/qemu.rs b/libafl_sugar/src/qemu.rs index d9e357bc44..0292428043 100644 --- a/libafl_sugar/src/qemu.rs +++ b/libafl_sugar/src/qemu.rs @@ -63,7 +63,7 @@ where /// clusters. #[builder(default = None, setter(strip_option))] remote_broker_addr: Option, - /// Bytes harness + /// Bytes harness #[builder(setter(strip_option))] harness: Option, // Syscall hook @@ -113,7 +113,7 @@ where let stats = MultiStats::new(|s| println!("{}", s)); - let mut run_client = |state: Option>, mut mgr| { + let mut run_client = |state: Option>, mut mgr, _core_id| { // Create an observation channel using the coverage map let edges = unsafe { &mut hooks::EDGES_MAP }; let edges_counter = unsafe { &mut hooks::MAX_EDGES_NUM };