diff --git a/src/corpus/mod.rs b/src/corpus/mod.rs index de399d7970..6179a44c37 100644 --- a/src/corpus/mod.rs +++ b/src/corpus/mod.rs @@ -1,16 +1,17 @@ extern crate alloc; + pub mod testcase; pub use testcase::{Testcase, TestcaseMetadata}; -use crate::inputs::Input; -use crate::utils::{HasRand, Rand}; -use crate::AflError; - use alloc::rc::Rc; use core::cell::RefCell; use core::marker::PhantomData; use std::path::PathBuf; +use crate::inputs::Input; +use crate::utils::{HasRand, Rand}; +use crate::AflError; + pub trait HasEntriesVec where I: Input, @@ -307,14 +308,14 @@ mod tests { use crate::corpus::Testcase; use crate::corpus::{OnDiskCorpus, QueueCorpus}; use crate::inputs::bytes::BytesInput; - use crate::utils::Xoshiro256StarRand; + use crate::utils::DefaultRand; use std::path::PathBuf; #[test] fn test_queuecorpus() { - let rand = Xoshiro256StarRand::preseeded_rr(); + let rand = DefaultRand::preseeded_rr(); let mut q = QueueCorpus::new(OnDiskCorpus::new(&rand, PathBuf::from("fancy/path"))); let i = BytesInput::new(vec![0; 4]); let t = Testcase::with_filename_rr(i, PathBuf::from("fancyfile")); diff --git a/src/corpus/testcase.rs b/src/corpus/testcase.rs index 3694c87e2c..92a5156a27 100644 --- a/src/corpus/testcase.rs +++ b/src/corpus/testcase.rs @@ -1,4 +1,5 @@ extern crate alloc; + use crate::inputs::Input; use crate::AflError; diff --git a/src/engines/mod.rs b/src/engines/mod.rs index 564d0b8b7f..3ac56c26b0 100644 --- a/src/engines/mod.rs +++ b/src/engines/mod.rs @@ -1,15 +1,15 @@ //! The engine is the core piece of every good fuzzer extern crate alloc; +use alloc::rc::Rc; +use core::cell::RefCell; + use crate::corpus::Corpus; use crate::feedbacks::Feedback; use crate::inputs::Input; use crate::stages::Stage; use crate::AflError; -use alloc::rc::Rc; -use core::cell::RefCell; - pub trait Engine where C: Corpus, @@ -89,6 +89,10 @@ where #[cfg(test)] mod tests { + + use alloc::rc::Rc; + use core::cell::RefCell; + use crate::corpus::{Corpus, InMemoryCorpus, Testcase}; use crate::engines::{DefaultEngine, Engine}; use crate::executors::inmemory::InMemoryExecutor; @@ -98,10 +102,7 @@ mod tests { mutation_bitflip, ComposedByMutations, DefaultScheduledMutator, }; use crate::stages::mutational::DefaultMutationalStage; - use alloc::rc::Rc; - use core::cell::RefCell; - - use crate::utils::Xoshiro256StarRand; + use crate::utils::DefaultRand; fn harness(_executor: &dyn Executor, _buf: &[u8]) -> ExitKind { ExitKind::Ok @@ -109,7 +110,7 @@ mod tests { #[test] fn test_engine() { - let rand = Xoshiro256StarRand::preseeded_rr(); + let rand = DefaultRand::preseeded_rr(); let mut corpus = InMemoryCorpus::::new(&rand); let testcase = Testcase::new_rr(BytesInput::new(vec![0; 4])); diff --git a/src/executors/inmemory.rs b/src/executors/inmemory.rs index 6b26d06cac..6a3148b145 100644 --- a/src/executors/inmemory.rs +++ b/src/executors/inmemory.rs @@ -1,15 +1,15 @@ extern crate alloc; + +use alloc::rc::Rc; +use core::cell::RefCell; +use std::os::raw::c_void; +use std::ptr; + +use crate::executors::{Executor, ExitKind}; use crate::feedbacks::Feedback; use crate::inputs::Input; use crate::observers::Observer; use crate::AflError; -use alloc::rc::Rc; -use core::cell::RefCell; - -use crate::executors::{Executor, ExitKind}; - -use std::os::raw::c_void; -use std::ptr; type HarnessFunction = fn(&dyn Executor, &[u8]) -> ExitKind; diff --git a/src/executors/mod.rs b/src/executors/mod.rs index a13333c81f..af918a17c1 100644 --- a/src/executors/mod.rs +++ b/src/executors/mod.rs @@ -1,14 +1,15 @@ extern crate alloc; pub mod inmemory; +use alloc::rc::Rc; +use core::cell::RefCell; + use crate::corpus::Testcase; use crate::corpus::TestcaseMetadata; use crate::feedbacks::Feedback; use crate::inputs::Input; use crate::observers::Observer; use crate::AflError; -use alloc::rc::Rc; -use core::cell::RefCell; pub enum ExitKind { Ok, diff --git a/src/feedbacks/mod.rs b/src/feedbacks/mod.rs index 2ecf56eac5..3d5744ca37 100644 --- a/src/feedbacks/mod.rs +++ b/src/feedbacks/mod.rs @@ -1,14 +1,14 @@ extern crate alloc; extern crate num; -use crate::corpus::TestcaseMetadata; -use crate::inputs::Input; -use crate::observers::MapObserver; - use core::cell::RefCell; use core::marker::PhantomData; use num::Integer; +use crate::corpus::TestcaseMetadata; +use crate::inputs::Input; +use crate::observers::MapObserver; + pub trait Feedback where I: Input, diff --git a/src/inputs/bytes.rs b/src/inputs/bytes.rs index b221b119f1..089f0199ac 100644 --- a/src/inputs/bytes.rs +++ b/src/inputs/bytes.rs @@ -1,4 +1,5 @@ extern crate alloc; + use crate::inputs::{HasBytesVec, HasTargetBytes, Input}; use crate::AflError; @@ -43,11 +44,11 @@ impl BytesInput { #[cfg(test)] mod tests { - use crate::utils::{next_pow2, Rand, Xoshiro256StarRand}; + use crate::utils::{next_pow2, DefaultRand, Rand}; #[test] fn test_input() { - let mut rand = Xoshiro256StarRand::preseeded(); + let mut rand = DefaultRand::preseeded(); assert_ne!(rand.next(), rand.next()); assert!(rand.below(100) < 100); assert_eq!(rand.below(1), 0); diff --git a/src/inputs/mod.rs b/src/inputs/mod.rs index f9024b7c49..0efbbd27a6 100644 --- a/src/inputs/mod.rs +++ b/src/inputs/mod.rs @@ -1,8 +1,9 @@ extern crate alloc; + pub mod bytes; pub use bytes::BytesInput; -use std::clone::Clone; +use core::clone::Clone; use std::fs::File; use std::io::Read; use std::io::Write; diff --git a/src/lib.rs b/src/lib.rs index 31723f3cb9..88f0387016 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,6 +1,4 @@ extern crate alloc; -use std::io; -use thiserror::Error; pub mod corpus; pub mod engines; @@ -13,6 +11,9 @@ pub mod observers; pub mod stages; pub mod utils; +use std::io; +use thiserror::Error; + #[derive(Error, Debug)] pub enum AflError { #[error("Error in Serialization: `{0}`")] diff --git a/src/mutators/mod.rs b/src/mutators/mod.rs index d6c8188a83..978c792326 100644 --- a/src/mutators/mod.rs +++ b/src/mutators/mod.rs @@ -1,11 +1,12 @@ extern crate alloc; + pub mod scheduled; -use crate::corpus::Corpus; pub use scheduled::ComposedByMutations; pub use scheduled::DefaultScheduledMutator; pub use scheduled::HavocBytesMutator; pub use scheduled::ScheduledMutator; +use crate::corpus::Corpus; use crate::inputs::Input; use crate::utils::HasRand; use crate::AflError; diff --git a/src/mutators/scheduled.rs b/src/mutators/scheduled.rs index 1f134732a6..f98be1fb66 100644 --- a/src/mutators/scheduled.rs +++ b/src/mutators/scheduled.rs @@ -1,4 +1,5 @@ extern crate alloc; + use crate::inputs::{HasBytesVec, Input}; use crate::mutators::Corpus; use crate::mutators::Mutator; @@ -326,12 +327,12 @@ mod tests { use crate::corpus::{Corpus, InMemoryCorpus}; use crate::inputs::{BytesInput, HasBytesVec}; use crate::mutators::scheduled::mutation_splice; - use crate::utils::{DefaultHasRand, Xoshiro256StarRand}; + use crate::utils::{DefaultHasRand, DefaultRand}; #[test] fn test_mut_splice() { // With the current impl, seed of 1 will result in a split at pos 2. - let rand = &Xoshiro256StarRand::new_rr(1); + let rand = &DefaultRand::new_rr(1); let mut has_rand = DefaultHasRand::new(&rand); let mut corpus = InMemoryCorpus::new(&rand); corpus.add_input(BytesInput::new(vec!['a' as u8, 'b' as u8, 'c' as u8])); diff --git a/src/observers/mod.rs b/src/observers/mod.rs index 2b50f0b22b..b27ed5aaf7 100644 --- a/src/observers/mod.rs +++ b/src/observers/mod.rs @@ -1,8 +1,8 @@ extern crate alloc; extern crate num; +use core::slice::from_raw_parts_mut; use num::Integer; -use std::slice::from_raw_parts_mut; use crate::AflError; diff --git a/src/stages/mod.rs b/src/stages/mod.rs index 639ad8f1fa..e021f346ae 100644 --- a/src/stages/mod.rs +++ b/src/stages/mod.rs @@ -1,8 +1,9 @@ extern crate alloc; + pub mod mutational; -use crate::corpus::Corpus; pub use mutational::DefaultMutationalStage; +use crate::corpus::Corpus; use crate::inputs::Input; use crate::AflError; diff --git a/src/stages/mutational.rs b/src/stages/mutational.rs index ad22f5f078..fe4fce4cdc 100644 --- a/src/stages/mutational.rs +++ b/src/stages/mutational.rs @@ -1,4 +1,9 @@ extern crate alloc; + +use alloc::rc::Rc; +use core::cell::RefCell; +use core::marker::PhantomData; + use crate::corpus::testcase::Testcase; use crate::executors::Executor; use crate::inputs::Input; @@ -8,10 +13,6 @@ use crate::stages::Stage; use crate::utils::{HasRand, Rand}; use crate::AflError; -use alloc::rc::Rc; -use core::cell::RefCell; -use core::marker::PhantomData; - // TODO create HasMutatorsVec trait pub trait MutationalStage: Stage + HasRand diff --git a/src/utils.rs b/src/utils.rs index 5cb2458298..51bed50a56 100644 --- a/src/utils.rs +++ b/src/utils.rs @@ -3,12 +3,13 @@ extern crate alloc; use alloc::rc::Rc; use core::cell::RefCell; -use std::debug_assert; -use std::fmt::Debug; +use core::debug_assert; +use core::fmt::Debug; use std::time::{SystemTime, UNIX_EPOCH}; - use xxhash_rust::xxh3::xxh3_64_with_seed; +pub type DefaultRand = Xoshiro256StarRand; + /// Ways to get random around here pub trait Rand: Debug { // Sets the seed of this Rand @@ -171,7 +172,7 @@ where } /// Get the next higher power of two -pub fn next_pow2(val: u64) -> u64 { +pub const fn next_pow2(val: u64) -> u64 { let mut out = val.wrapping_sub(1); out |= out >> 1; out |= out >> 2; @@ -183,11 +184,11 @@ pub fn next_pow2(val: u64) -> u64 { #[cfg(test)] mod tests { - use crate::utils::{next_pow2, DefaultHasRand, HasRand, Rand, Xoshiro256StarRand}; + use crate::utils::{next_pow2, DefaultHasRand, DefaultRand, HasRand, Rand}; #[test] fn test_rand() { - let mut rand = Xoshiro256StarRand::preseeded(); + let mut rand = DefaultRand::preseeded(); assert_ne!(rand.next(), rand.next()); assert!(rand.below(100) < 100); assert_eq!(rand.below(1), 0); @@ -197,7 +198,7 @@ mod tests { #[test] fn test_has_rand() { - let rand = Xoshiro256StarRand::preseeded_rr(); + let rand = DefaultRand::preseeded_rr(); let has_rand = DefaultHasRand::new(&rand); assert!(has_rand.rand_below(100) < 100);