From 3a74f5335aa3698e59a8ac12aadd4d5207668d14 Mon Sep 17 00:00:00 2001 From: Dominik Maier Date: Fri, 8 Jan 2021 19:14:08 +0100 Subject: [PATCH] make mutators easier to use --- afl/src/executors/inmemory.rs | 2 +- afl/src/mutators/mutations.rs | 118 ++++++++++++---------------------- 2 files changed, 42 insertions(+), 78 deletions(-) diff --git a/afl/src/executors/inmemory.rs b/afl/src/executors/inmemory.rs index 1e19e75e79..d11d0dd006 100644 --- a/afl/src/executors/inmemory.rs +++ b/afl/src/executors/inmemory.rs @@ -318,7 +318,7 @@ mod tests { use alloc::boxed::Box; use crate::{ - executors::{inmemory::InMemoryExecutor, Executor, ExitKind}, + executors::{Executor, ExitKind, InMemoryExecutor}, inputs::NopInput, tuples::tuple_list, }; diff --git a/afl/src/mutators/mutations.rs b/afl/src/mutators/mutations.rs index e487b7955c..80999bc6bb 100644 --- a/afl/src/mutators/mutations.rs +++ b/afl/src/mutators/mutations.rs @@ -104,14 +104,12 @@ fn mem_set(data: &mut [u8], from: usize, len: usize, val: u8) { /// Bitflip mutation for inputs with a bytes vector pub fn mutation_bitflip( - _mutator: &mut M, + _: &mut M, rand: &mut R, - _corpus: &C, + _: &C, input: &mut I, ) -> Result where - M: Mutator, - C: Corpus, I: Input + HasBytesVec, R: Rand, { @@ -128,14 +126,12 @@ where } pub fn mutation_byteflip( - _mutator: &mut M, + _: &mut M, rand: &mut R, - _corpus: &C, + _: &C, input: &mut I, ) -> Result where - M: Mutator, - C: Corpus, I: Input + HasBytesVec, R: Rand, { @@ -152,14 +148,12 @@ where } pub fn mutation_byteinc( - _mutator: &mut M, + _: &mut M, rand: &mut R, - _corpus: &C, + _: &C, input: &mut I, ) -> Result where - M: Mutator, - C: Corpus, I: Input + HasBytesVec, R: Rand, { @@ -177,14 +171,12 @@ where } pub fn mutation_bytedec( - _mutator: &mut M, + _: &mut M, rand: &mut R, - _corpus: &C, + _: &C, input: &mut I, ) -> Result where - M: Mutator, - C: Corpus, I: Input + HasBytesVec, R: Rand, { @@ -202,14 +194,12 @@ where } pub fn mutation_byteneg( - _mutator: &mut M, + _: &mut M, rand: &mut R, - _corpus: &C, + _: &C, input: &mut I, ) -> Result where - M: Mutator, - C: Corpus, I: Input + HasBytesVec, R: Rand, { @@ -226,14 +216,12 @@ where } pub fn mutation_byterand( - _mutator: &mut M, + _: &mut M, rand: &mut R, - _corpus: &C, + _: &C, input: &mut I, ) -> Result where - M: Mutator, - C: Corpus, I: Input + HasBytesVec, R: Rand, { @@ -250,14 +238,12 @@ where } pub fn mutation_byteadd( - _mutator: &mut M, + _: &mut M, rand: &mut R, - _corpus: &C, + _: &C, input: &mut I, ) -> Result where - M: Mutator, - C: Corpus, I: Input + HasBytesVec, R: Rand, { @@ -279,14 +265,12 @@ where } pub fn mutation_wordadd( - _mutator: &mut M, + _: &mut M, rand: &mut R, - _corpus: &C, + _: &C, input: &mut I, ) -> Result where - M: Mutator, - C: Corpus, I: Input + HasBytesVec, R: Rand, { @@ -310,14 +294,12 @@ where } pub fn mutation_dwordadd( - _mutator: &mut M, + _: &mut M, rand: &mut R, - _corpus: &C, + _: &C, input: &mut I, ) -> Result where - M: Mutator, - C: Corpus, I: Input + HasBytesVec, R: Rand, { @@ -341,14 +323,12 @@ where } pub fn mutation_qwordadd( - _mutator: &mut M, + _: &mut M, rand: &mut R, - _corpus: &C, + _: &C, input: &mut I, ) -> Result where - M: Mutator, - C: Corpus, I: Input + HasBytesVec, R: Rand, { @@ -372,14 +352,12 @@ where } pub fn mutation_byteinteresting( - _mutator: &mut M, + _: &mut M, rand: &mut R, - _corpus: &C, + _: &C, input: &mut I, ) -> Result where - M: Mutator, - C: Corpus, I: Input + HasBytesVec, R: Rand, { @@ -397,14 +375,12 @@ where } pub fn mutation_wordinteresting( - _mutator: &mut M, + _: &mut M, rand: &mut R, - _corpus: &C, + _: &C, input: &mut I, ) -> Result where - M: Mutator, - C: Corpus, I: Input + HasBytesVec, R: Rand, { @@ -427,14 +403,12 @@ where } pub fn mutation_dwordinteresting( - _mutator: &mut M, + _: &mut M, rand: &mut R, - _corpus: &C, + _: &C, input: &mut I, ) -> Result where - M: Mutator, - C: Corpus, I: Input + HasBytesVec, R: Rand, { @@ -457,14 +431,12 @@ where } pub fn mutation_bytesdelete( - _mutator: &mut M, + _: &mut M, rand: &mut R, - _corpus: &C, + _: &C, input: &mut I, ) -> Result where - M: Mutator, - C: Corpus, I: Input + HasBytesVec, R: Rand, { @@ -481,9 +453,10 @@ where } pub fn mutation_bytesexpand( + // TODO: max_size instead of mutator? mutator: &mut M, rand: &mut R, - _corpus: &C, + _: &C, input: &mut I, ) -> Result where @@ -508,7 +481,7 @@ where pub fn mutation_bytesinsert( mutator: &mut M, rand: &mut R, - _corpus: &C, + _: &C, input: &mut I, ) -> Result where @@ -535,7 +508,7 @@ where pub fn mutation_bytesrandinsert( mutator: &mut M, rand: &mut R, - _corpus: &C, + _: &C, input: &mut I, ) -> Result where @@ -560,14 +533,12 @@ where } pub fn mutation_bytesset( - _mutator: &mut M, + _: &mut M, rand: &mut R, - _corpus: &C, + _: &C, input: &mut I, ) -> Result where - M: Mutator, - C: Corpus, I: Input + HasBytesVec, R: Rand, { @@ -588,14 +559,12 @@ where } pub fn mutation_bytesrandset( - _mutator: &mut M, + _: &mut M, rand: &mut R, - _corpus: &C, + _: &C, input: &mut I, ) -> Result where - M: Mutator, - C: Corpus, I: Input + HasBytesVec, R: Rand, { @@ -616,14 +585,12 @@ where } pub fn mutation_bytescopy( - _mutator: &mut M, + _: &mut M, rand: &mut R, - _corpus: &C, + _: &C, input: &mut I, ) -> Result where - M: Mutator, - C: Corpus, I: Input + HasBytesVec, R: Rand, { @@ -641,14 +608,12 @@ where } pub fn mutation_bytesswap( - _mutator: &mut M, + _: &mut M, rand: &mut R, - _corpus: &C, + _: &C, input: &mut I, ) -> Result where - M: Mutator, - C: Corpus, I: Input + HasBytesVec, R: Rand, { @@ -685,13 +650,12 @@ fn locate_diffs(this: &[u8], other: &[u8]) -> (i64, i64) { /// Splicing mutator pub fn mutation_splice( - _mutator: &mut M, + _: &mut M, rand: &mut R, corpus: &C, input: &mut I, ) -> Result where - M: Mutator, C: Corpus, I: Input + HasBytesVec, R: Rand,