From 9a0352d820774edff1ecd573ba3404050cdcc1ff Mon Sep 17 00:00:00 2001 From: Dominik Maier Date: Thu, 29 Oct 2020 11:38:22 +0100 Subject: [PATCH] added mutable map --- src/observers/mod.rs | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/src/observers/mod.rs b/src/observers/mod.rs index 119963a15a..dca2cc6918 100644 --- a/src/observers/mod.rs +++ b/src/observers/mod.rs @@ -1,5 +1,5 @@ use crate::AflError; -use std::slice::from_raw_parts; +use std::slice::from_raw_parts_mut; pub trait Observer { fn flush(&mut self) -> Result<(), AflError> { @@ -19,11 +19,13 @@ pub trait MapObserver: Observer { fn get_map(&self) -> &[MapT]; //fn get_map_mut(&mut self) -> &mut Vec; + fn get_map_mut(&mut self) -> &mut [u8]; + } pub struct U8MapObserver { - map: &'static [u8], + map: &'static mut [u8], } @@ -38,18 +40,20 @@ impl Observer for U8MapObserver { impl MapObserver for U8MapObserver { - // TODO: Rust fn get_map(&self) -> &[u8] { - return self.map; + self.map + } + + fn get_map_mut(&mut self) -> &mut [u8] { + self.map } - //fn get_map_mut(&mut self) -> &mut Vec; } impl U8MapObserver { - pub fn new(map_ptr: *const u8, len: usize) -> Self { + pub fn new(map_ptr: *mut u8, len: usize) -> Self { unsafe { - U8MapObserver{map: from_raw_parts(map_ptr, len)} + U8MapObserver{map: from_raw_parts_mut(map_ptr, len)} } } } \ No newline at end of file