commit bca91aeafbbd6a55fab0bfe599762014fc35df4a Author: Dominik Maier Date: Fri Oct 23 01:49:09 2020 +0200 initial commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000000..96ef6c0b94 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +/target +Cargo.lock diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 0000000000..618ab432cd --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,9 @@ +[package] +name = "afl" +version = "0.1.0" +authors = ["Dominik Maier "] +edition = "2018" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] diff --git a/src/engines/engine.rs b/src/engines/engine.rs new file mode 100644 index 0000000000..c12814c011 --- /dev/null +++ b/src/engines/engine.rs @@ -0,0 +1,28 @@ +use std::time; + +pub trait RandState {} +pub trait Executor {} +pub trait Feedback {} +pub trait Stage {} + +pub trait Monitor {} + +pub struct DefaultEngine { + + pub rand: Box, + pub feedback: Vec>, + + pub stages: Vec>, + pub current_stage: Box, + + pub executor: Box, + + pub executions: u64, + + pub time_start: time::SystemTime, + pub time_last_find: Option, + + // TODO: Map + pub monitors: Vec>, + +} \ No newline at end of file diff --git a/src/engines/mod.rs b/src/engines/mod.rs new file mode 100644 index 0000000000..a2ed982457 --- /dev/null +++ b/src/engines/mod.rs @@ -0,0 +1,5 @@ +pub mod engine; + +pub trait Engine { + +} \ No newline at end of file diff --git a/src/engines/monitor.rs b/src/engines/monitor.rs new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/inputs/bytes.rs b/src/inputs/bytes.rs new file mode 100644 index 0000000000..eba6fd8048 --- /dev/null +++ b/src/inputs/bytes.rs @@ -0,0 +1,20 @@ +use crate::inputs::Input; + +use std::io::Error; + +#[derive(Debug)] +pub struct BytesInput { + bytes: Vec, +} + +impl Input for BytesInput { + + fn serialize(&self) -> Result<&[u8], Error> { + Ok(&self.bytes) + } + fn deserialize(&mut self, buf: &[u8]) -> Result<(), Error> { + self.bytes.truncate(0); + self.bytes.extend_from_slice(buf); + Ok(()) + } +} \ No newline at end of file diff --git a/src/inputs/mod.rs b/src/inputs/mod.rs new file mode 100644 index 0000000000..f365f5ad5e --- /dev/null +++ b/src/inputs/mod.rs @@ -0,0 +1,28 @@ +pub mod bytes; + +use std::io::Error; +use std::fs::File; +use std::io::Write; +use std::io::Read; + +pub trait Input { + + fn to_file(&self, path: &str) -> Result<(), Error> { + let mut file = File::create(path)?; + file.write_all(self.serialize()?)?; + Ok(()) + } + + fn from_file(&mut self, path: &str) -> Result<(), Error> { + let mut file = File::create(path)?; + let mut buf = vec![]; + file.read_to_end(&mut buf)?; + self.deserialize(&buf)?; + Ok(()) + } + + fn serialize(&self) -> Result<&[u8], Error>; + + fn deserialize(&mut self, buf: &[u8]) -> Result<(), Error>; + +} \ No newline at end of file diff --git a/src/lib.rs b/src/lib.rs new file mode 100644 index 0000000000..105655b79d --- /dev/null +++ b/src/lib.rs @@ -0,0 +1,10 @@ +pub mod engines; +pub mod inputs; + +#[cfg(test)] +mod tests { + #[test] + fn it_works() { + assert_eq!(2 + 2, 4); + } +} diff --git a/src/main.rs b/src/main.rs new file mode 100644 index 0000000000..7da3a48059 --- /dev/null +++ b/src/main.rs @@ -0,0 +1,4 @@ + +fn main() { + println!("Hello, world!"); +}