observer traint

This commit is contained in:
Andrea Fioraldi 2020-10-27 20:17:11 +01:00
parent a2e50c7b51
commit 89e0b01706
3 changed files with 42 additions and 1 deletions

View File

@ -1 +1,26 @@
pub trait Executor {}
use crate::AflError;
use crate::inputs::Input;
use crate::observers::Observer;
pub enum ExitKind {
Ok,
Crash,
OOM,
Timeout
}
pub trait Executor {
fn run_target(&mut self) -> Result<ExitKind, AflError>;
fn place_input(&mut self, entry: Box<dyn Input>) -> Result<(), AflError>;
}
// TODO abstract classes? how?
pub struct ExecutorBase {
observers: Vec<Box<dyn Observer>>,
cur_input: Box<dyn Input>
}

View File

@ -10,6 +10,7 @@ pub mod monitors;
pub mod mutators;
pub mod stages;
pub mod utils;
pub mod observers;
#[derive(Error, Debug)]
pub enum AflError {

15
src/observers/mod.rs Normal file
View File

@ -0,0 +1,15 @@
use crate::AflError;
pub trait Observer {
fn flush(&mut self) -> Result<(), AflError> {
Ok(())
}
fn reset(&mut self) -> Result<(), AflError>;
fn post_exec(&mut self) -> Result<(), AflError> {
Ok(())
}
}