event trait

This commit is contained in:
Andrea Fioraldi 2020-11-21 13:39:50 +01:00
parent a98b94e818
commit 6b6e2a8907
4 changed files with 27 additions and 5 deletions

View File

@ -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");
}

View File

@ -199,6 +199,7 @@ where
fn fuzz_one(&mut self, state: &mut S) -> Result<usize, AflError> {
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)?;
}

24
src/events/mod.rs Normal file
View File

@ -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<E: Event>(&self) -> bool;
/* fn enabled<E: Event>() -> bool {
match TypeId::of::<E>() {
TypeId::of::<MyEvent>() => true,
_ => false,
}
} */
/// Fire an Event
fn fire<E: Event>(&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<usize, AflError>;
}

View File

@ -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;