From 6b6e2a8907bfaacadcbaceab7798bd49f479a303 Mon Sep 17 00:00:00 2001 From: Andrea Fioraldi Date: Sat, 21 Nov 2020 13:39:50 +0100 Subject: [PATCH] event trait --- fuzzers/libfuzzer/src/lib.rs | 4 +--- src/engines/mod.rs | 1 + src/events/mod.rs | 24 ++++++++++++++++++++++++ src/lib.rs | 3 +-- 4 files changed, 27 insertions(+), 5 deletions(-) create mode 100644 src/events/mod.rs diff --git a/fuzzers/libfuzzer/src/lib.rs b/fuzzers/libfuzzer/src/lib.rs index 9a4645e871..b33f8e9f2d 100644 --- a/fuzzers/libfuzzer/src/lib.rs +++ b/fuzzers/libfuzzer/src/lib.rs @@ -58,11 +58,9 @@ pub extern "C" fn afl_libfuzzer_main() { engine.add_stage(Box::new(stage)); for i in 0..1000 { - println!("Fuzzer corpus iteration #{}", i); - let idx = engine + engine .fuzz_one(&mut state) .expect(&format!("Error in iter {}", i)); - println!("Fuzzed entry #{}", idx); } println!("OK"); } diff --git a/src/engines/mod.rs b/src/engines/mod.rs index a44ee3cb87..7b709e70fd 100644 --- a/src/engines/mod.rs +++ b/src/engines/mod.rs @@ -199,6 +199,7 @@ where fn fuzz_one(&mut self, state: &mut S) -> Result { let (testcase, idx) = state.corpus_mut().next()?; + println!("Cur entry: {}\tExecutions: {}", idx, state.executions()); for stage in self.stages_mut() { stage.perform(testcase.clone(), state)?; } diff --git a/src/events/mod.rs b/src/events/mod.rs new file mode 100644 index 0000000000..96714d29d5 --- /dev/null +++ b/src/events/mod.rs @@ -0,0 +1,24 @@ +use core::any::TypeId; +use core::fmt::Debug; + +use crate::AflError; + +pub trait Event: Debug {} + +pub trait EventManager { + /// Check if this EventaManager support a given Event type + fn enabled(&self) -> bool; + /* fn enabled() -> bool { + match TypeId::of::() { + TypeId::of::() => true, + _ => false, + } + } */ + + /// Fire an Event + fn fire(&mut self) -> Result<(), AflError>; + + /// Lookup for incoming events and process them. + /// Return the number of processes events or an error + fn lookup(&mut self) -> Result; +} diff --git a/src/lib.rs b/src/lib.rs index c143804eda..b7d727f4c4 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -7,11 +7,10 @@ pub mod corpus; pub mod engines; pub mod executors; pub mod feedbacks; +pub mod generators; pub mod inputs; -pub mod monitors; pub mod mutators; pub mod observers; -pub mod generators; pub mod stages; pub mod utils;