moved rand to rand_mut + fmt

This commit is contained in:
Dominik Maier 2020-11-06 02:48:50 +01:00
parent f13e680ee0
commit bf1c1f4057
5 changed files with 16 additions and 14 deletions

View File

@ -102,7 +102,7 @@ where
} }
} }
impl<I, R> Corpus<I> for InMemoryCorpus< I, R> impl<I, R> Corpus<I> for InMemoryCorpus<I, R>
where where
I: Input, I: Input,
R: Rand, R: Rand,

View File

@ -196,10 +196,10 @@ mod tests {
let mut corpus = InMemoryCorpus::<BytesInput, _>::new(&rand); let mut corpus = InMemoryCorpus::<BytesInput, _>::new(&rand);
let mut executor = InMemoryExecutor::new(harness); let mut executor = InMemoryExecutor::new(harness);
let mut engine = DefaultEngine::new(&mut corpus, &mut executor); let mut engine = DefaultEngine::new(&mut corpus, &mut executor);
let mut stage = Box::new(DefaultMutationalStage::new(&rand, &mut engine)); let stage = Box::new(DefaultMutationalStage::new(&rand, &mut engine));
engine.add_stage(stage); engine.add_stage(stage);
engine.fuzz_one().unwrap(); engine.fuzz_one().unwrap();
let mut stage1 = Box::new(DefaultMutationalStage::new(&rand, &mut engine)); let stage1 = Box::new(DefaultMutationalStage::new(&rand, &mut engine));
engine.fuzz_one().unwrap(); engine.fuzz_one().unwrap();
} }
} }

View File

@ -4,9 +4,9 @@ use crate::mutators::{HasOptionCorpus, Mutator};
use crate::utils::{HasRand, Rand}; use crate::utils::{HasRand, Rand};
use crate::AflError; use crate::AflError;
use std::cell::RefCell;
use std::marker::PhantomData; use std::marker::PhantomData;
use std::rc::Rc; use std::rc::Rc;
use std::cell::RefCell;
/// The generic function type that identifies mutations /// The generic function type that identifies mutations
type MutationFunction<M, I> = fn(&mut M, &mut I) -> Result<(), AflError>; type MutationFunction<M, I> = fn(&mut M, &mut I) -> Result<(), AflError>;

View File

@ -70,7 +70,6 @@ where
fn rand(&self) -> &Rc<RefCell<R>> { fn rand(&self) -> &Rc<RefCell<R>> {
&self.rand &self.rand
} }
} }
impl<'a, I, R, E> HasEvaluator<I> for DefaultMutationalStage<'a, I, R, E> impl<'a, I, R, E> HasEvaluator<I> for DefaultMutationalStage<'a, I, R, E>

View File

@ -1,9 +1,9 @@
//! Utility functions for AFL //! Utility functions for AFL
use std::debug_assert;
use std::rc::Rc;
use std::cell::RefCell; use std::cell::RefCell;
use std::debug_assert;
use std::fmt::Debug; use std::fmt::Debug;
use std::rc::Rc;
use xxhash_rust::xxh3::xxh3_64_with_seed; use xxhash_rust::xxh3::xxh3_64_with_seed;
/// Ways to get random around here /// Ways to get random around here
@ -59,7 +59,9 @@ pub trait HasRand {
// Gets a value between the given lower bound (inclusive) and upper bound (inclusive) // Gets a value between the given lower bound (inclusive) and upper bound (inclusive)
fn rand_between(&self, lower_bound_incl: u64, upper_bound_incl: u64) -> u64 { fn rand_between(&self, lower_bound_incl: u64, upper_bound_incl: u64) -> u64 {
self.rand().borrow_mut().between(lower_bound_incl, upper_bound_incl) self.rand()
.borrow_mut()
.between(lower_bound_incl, upper_bound_incl)
} }
} }
@ -128,7 +130,7 @@ pub fn next_pow2(val: u64) -> u64 {
#[cfg(test)] #[cfg(test)]
mod tests { mod tests {
use crate::utils::{next_pow2, Rand, HasRand, Xoshiro256StarRand}; use crate::utils::{next_pow2, HasRand, Rand, Xoshiro256StarRand};
#[test] #[test]
fn test_rand() { fn test_rand() {
@ -140,18 +142,18 @@ mod tests {
assert!(rand.between(11, 20) > 10); assert!(rand.between(11, 20) > 10);
} }
use std::rc::Rc;
use std::cell::RefCell; use std::cell::RefCell;
use std::rc::Rc;
struct HasRandTest<R> struct HasRandTest<R>
where where
R: Rand, R: Rand,
{ {
rand: Rc<RefCell<R>> rand: Rc<RefCell<R>>,
} }
impl<R> HasRand for HasRandTest<R> impl<R> HasRand for HasRandTest<R>
where where
R: Rand R: Rand,
{ {
type R = R; type R = R;
@ -162,11 +164,12 @@ mod tests {
fn test_has_rand() { fn test_has_rand() {
let rand = Xoshiro256StarRand::new_rc(); let rand = Xoshiro256StarRand::new_rc();
let has_rand = HasRandTest{rand: Rc::clone(&rand)}; let has_rand = HasRandTest {
rand: Rc::clone(&rand),
};
assert!(has_rand.rand_below(100) < 100); assert!(has_rand.rand_below(100) < 100);
assert_eq!(has_rand.rand_below(1), 0); assert_eq!(has_rand.rand_below(1), 0);
} }
#[test] #[test]