From c219502f0fe654927c3f74f9791f786f0740f344 Mon Sep 17 00:00:00 2001 From: Dominik Maier Date: Sat, 27 Feb 2021 15:52:36 +0100 Subject: some rust cleanup --- .../rust/example_lain/src/lain_mutator.rs | 59 +++++++++++++++++++++ custom_mutators/rust/example_lain/src/lib.rs | 60 ---------------------- 2 files changed, 59 insertions(+), 60 deletions(-) create mode 100644 custom_mutators/rust/example_lain/src/lain_mutator.rs delete mode 100644 custom_mutators/rust/example_lain/src/lib.rs (limited to 'custom_mutators/rust/example_lain/src') diff --git a/custom_mutators/rust/example_lain/src/lain_mutator.rs b/custom_mutators/rust/example_lain/src/lain_mutator.rs new file mode 100644 index 00000000..22e5fe73 --- /dev/null +++ b/custom_mutators/rust/example_lain/src/lain_mutator.rs @@ -0,0 +1,59 @@ +use custom_mutator::{export_mutator, CustomMutator}; +use lain::{ + mutator::Mutator, + prelude::*, + rand::{rngs::StdRng, SeedableRng}, +}; + +#[derive(Debug, Mutatable, NewFuzzed, BinarySerialize)] +struct MyStruct { + field_1: u8, + + #[lain(bits = 3)] + field_2: u8, + + #[lain(bits = 5)] + field_3: u8, + + #[lain(min = 5, max = 10000)] + field_4: u32, + + #[lain(ignore)] + ignored_field: u64, +} + +struct LainMutator { + mutator: Mutator, + buffer: Vec, +} + +impl CustomMutator for LainMutator { + type Error = (); + + fn init(seed: u32) -> Result { + Ok(Self { + mutator: Mutator::new(StdRng::seed_from_u64(seed as u64)), + buffer: Vec::new(), + }) + } + + fn fuzz<'b, 's: 'b>( + &'s mut self, + _buffer: &'b mut [u8], + _add_buff: Option<&[u8]>, + max_size: usize, + ) -> Result, ()> { + // we just sample an instance of MyStruct, ignoring the current input + let instance = MyStruct::new_fuzzed(&mut self.mutator, None); + let size = instance.serialized_size(); + if size > max_size { + return Err(()); + } + self.buffer.clear(); + self.buffer.reserve(size); + instance.binary_serialize::<_, BigEndian>(&mut self.buffer); + Ok(Some(self.buffer.as_slice())) + } +} + +export_mutator!(LainMutator); diff --git a/custom_mutators/rust/example_lain/src/lib.rs b/custom_mutators/rust/example_lain/src/lib.rs deleted file mode 100644 index 3336e861..00000000 --- a/custom_mutators/rust/example_lain/src/lib.rs +++ /dev/null @@ -1,60 +0,0 @@ -use custom_mutator::{export_mutator, CustomMutator}; -use lain::{ - mutator::Mutator, - prelude::*, - rand::{rngs::StdRng, SeedableRng}, -}; -use std::os::raw::c_uint; - -#[derive(Debug, Mutatable, NewFuzzed, BinarySerialize)] -struct MyStruct { - field_1: u8, - - #[lain(bits = 3)] - field_2: u8, - - #[lain(bits = 5)] - field_3: u8, - - #[lain(min = 5, max = 10000)] - field_4: u32, - - #[lain(ignore)] - ignored_field: u64, -} - -struct LainMutator { - mutator: Mutator, - buffer: Vec, -} - -impl CustomMutator for LainMutator { - type Error = (); - - fn init(seed: c_uint) -> Result { - Ok(Self { - mutator: Mutator::new(StdRng::seed_from_u64(seed as u64)), - buffer: Vec::new(), - }) - } - - fn fuzz<'b, 's: 'b>( - &'s mut self, - _buffer: &'b mut [u8], - _add_buff: Option<&[u8]>, - max_size: usize, - ) -> Result, ()> { - // we just sample an instance of MyStruct, ignoring the current input - let instance = MyStruct::new_fuzzed(&mut self.mutator, None); - let size = instance.serialized_size(); - if size > max_size { - return Err(()); - } - self.buffer.clear(); - self.buffer.reserve(size); - instance.binary_serialize::<_, BigEndian>(&mut self.buffer); - Ok(Some(self.buffer.as_slice())) - } -} - -export_mutator!(LainMutator); -- cgit 1.4.1