From f0743cbb1783575f64279ec20dc2e1dd188bf50f Mon Sep 17 00:00:00 2001 From: Andrea Fioraldi Date: Fri, 2 Jul 2021 15:07:51 +0200 Subject: [PATCH] remove serde bounds for Observer (#202) --- libafl/src/bolts/launcher.rs | 2 +- libafl/src/events/llmp.rs | 22 +++++++++++----------- libafl/src/events/mod.rs | 4 ++-- libafl/src/fuzzer.rs | 6 +++--- libafl/src/observers/cmp.rs | 12 ++++++------ libafl/src/observers/mod.rs | 4 ++-- libafl_targets/Cargo.toml | 2 +- libafl_targets/src/cmplog.rs | 13 +++---------- libafl_targets/src/lib.rs | 3 --- 9 files changed, 29 insertions(+), 39 deletions(-) diff --git a/libafl/src/bolts/launcher.rs b/libafl/src/bolts/launcher.rs index 2e7880b843..17d6ec84b6 100644 --- a/libafl/src/bolts/launcher.rs +++ b/libafl/src/bolts/launcher.rs @@ -81,7 +81,7 @@ where impl<'a, I, OT, S, SP, ST> Launcher<'a, I, OT, S, SP, ST> where I: Input, - OT: ObserversTuple, + OT: ObserversTuple + serde::de::DeserializeOwned, ST: Stats + Clone, SP: ShMemProvider + 'static, S: DeserializeOwned, diff --git a/libafl/src/events/llmp.rs b/libafl/src/events/llmp.rs index d6565790bd..0ad3a084a1 100644 --- a/libafl/src/events/llmp.rs +++ b/libafl/src/events/llmp.rs @@ -362,7 +362,7 @@ where event: Event, ) -> Result<(), Error> where - OT: ObserversTuple, + OT: ObserversTuple + serde::de::DeserializeOwned, E: Executor + HasObservers, Z: ExecutionProcessor + EvaluatorObservers, { @@ -461,7 +461,7 @@ where SP: ShMemProvider, E: Executor + HasObservers, I: Input, - OT: ObserversTuple, + OT: ObserversTuple + serde::de::DeserializeOwned, Z: ExecutionProcessor + EvaluatorObservers, //CE: CustomEvent, { fn process(&mut self, fuzzer: &mut Z, state: &mut S, executor: &mut E) -> Result { @@ -501,7 +501,7 @@ impl EventManager for LlmpEventManager + HasObservers, I: Input, - OT: ObserversTuple, + OT: ObserversTuple + serde::de::DeserializeOwned, SP: ShMemProvider, Z: ExecutionProcessor + EvaluatorObservers, //CE: CustomEvent, { @@ -510,7 +510,7 @@ where impl HasEventManagerId for LlmpEventManager where I: Input, - OT: ObserversTuple, + OT: ObserversTuple + serde::de::DeserializeOwned, SP: ShMemProvider, { /// Gets the id assigned to this sender. @@ -626,7 +626,7 @@ where E: Executor, I, S, Z> + HasObservers, I: Input, Z: ExecutionProcessor + EvaluatorObservers, - OT: ObserversTuple, + OT: ObserversTuple + serde::de::DeserializeOwned, SP: ShMemProvider + 'static, //CE: CustomEvent, { @@ -641,7 +641,7 @@ where I: Input, S: Serialize, Z: ExecutionProcessor + EvaluatorObservers, - OT: ObserversTuple, + OT: ObserversTuple + serde::de::DeserializeOwned, SP: ShMemProvider + 'static, //CE: CustomEvent, { @@ -650,7 +650,7 @@ where impl HasEventManagerId for LlmpRestartingEventManager where I: Input, - OT: ObserversTuple, + OT: ObserversTuple + serde::de::DeserializeOwned, S: Serialize, SP: ShMemProvider + 'static, { @@ -668,7 +668,7 @@ const _ENV_FUZZER_BROKER_CLIENT_INITIAL: &str = "_AFL_ENV_FUZZER_BROKER_CLIENT"; impl LlmpRestartingEventManager where I: Input, - OT: ObserversTuple, + OT: ObserversTuple + serde::de::DeserializeOwned, SP: ShMemProvider + 'static, //CE: CustomEvent, { @@ -719,7 +719,7 @@ where I: Input, S: DeserializeOwned, ST: Stats + Clone, - OT: ObserversTuple, + OT: ObserversTuple + serde::de::DeserializeOwned, S: DeserializeOwned, { #[cfg(target_os = "android")] @@ -743,7 +743,7 @@ where pub struct RestartingMgr where I: Input, - OT: ObserversTuple, + OT: ObserversTuple + serde::de::DeserializeOwned, S: DeserializeOwned, SP: ShMemProvider + 'static, ST: Stats, @@ -775,7 +775,7 @@ where impl RestartingMgr where I: Input, - OT: ObserversTuple, + OT: ObserversTuple + serde::de::DeserializeOwned, S: DeserializeOwned, SP: ShMemProvider, ST: Stats + Clone, diff --git a/libafl/src/events/mod.rs b/libafl/src/events/mod.rs index 925b59f752..9c67f8949c 100644 --- a/libafl/src/events/mod.rs +++ b/libafl/src/events/mod.rs @@ -215,7 +215,7 @@ where /// Serialize all observers for this type and manager fn serialize_observers(&mut self, observers: &OT) -> Result, Error> where - OT: ObserversTuple, + OT: ObserversTuple + serde::Serialize, { Ok(postcard::to_allocvec(observers)?) } @@ -247,7 +247,7 @@ pub trait EventProcessor { /// Deserialize all observers for this type and manager fn deserialize_observers(&mut self, observers_buf: &[u8]) -> Result where - OT: ObserversTuple, + OT: ObserversTuple + serde::de::DeserializeOwned, { Ok(postcard::from_bytes(observers_buf)?) } diff --git a/libafl/src/fuzzer.rs b/libafl/src/fuzzer.rs index 126c66b8cd..2b5bbd6bc3 100644 --- a/libafl/src/fuzzer.rs +++ b/libafl/src/fuzzer.rs @@ -311,7 +311,7 @@ where F: Feedback, I: Input, OF: Feedback, - OT: ObserversTuple, + OT: ObserversTuple + serde::Serialize + serde::de::DeserializeOwned, S: HasCorpus + HasSolutions + HasClientPerfStats + HasExecutions, { /// Evaluate if a set of observation channels has an interesting state @@ -419,7 +419,7 @@ impl EvaluatorObservers where C: Corpus, CS: CorpusScheduler, - OT: ObserversTuple, + OT: ObserversTuple + serde::Serialize + serde::de::DeserializeOwned, F: Feedback, I: Input, OF: Feedback, @@ -452,7 +452,7 @@ where C: Corpus, CS: CorpusScheduler, E: Executor + HasObservers, - OT: ObserversTuple, + OT: ObserversTuple + serde::Serialize + serde::de::DeserializeOwned, EM: EventManager, F: Feedback, I: Input, diff --git a/libafl/src/observers/cmp.rs b/libafl/src/observers/cmp.rs index 29f6384179..aba2530e36 100644 --- a/libafl/src/observers/cmp.rs +++ b/libafl/src/observers/cmp.rs @@ -70,7 +70,7 @@ impl CmpValuesMetadata { } /// A [`CmpMap`] traces comparisons during the current execution -pub trait CmpMap: Serialize + DeserializeOwned { +pub trait CmpMap { /// Get the number of cmps fn len(&self) -> usize; @@ -176,7 +176,7 @@ where #[serde(bound = "CM: serde::de::DeserializeOwned")] pub struct StdCmpObserver<'a, CM> where - CM: CmpMap, + CM: CmpMap + Serialize + DeserializeOwned, { map: OwnedRefMut<'a, CM>, size: Option>, @@ -185,7 +185,7 @@ where impl<'a, CM, I, S> CmpObserver for StdCmpObserver<'a, CM> where - CM: CmpMap, + CM: CmpMap + Serialize + DeserializeOwned, { /// Get the number of usable cmps (all by default) fn usable_count(&self) -> usize { @@ -206,7 +206,7 @@ where impl<'a, CM, I, S> Observer for StdCmpObserver<'a, CM> where - CM: CmpMap, + CM: CmpMap + Serialize + DeserializeOwned, { fn pre_exec(&mut self, _state: &mut S, _input: &I) -> Result<(), Error> { self.map.as_mut().reset()?; @@ -216,7 +216,7 @@ where impl<'a, CM> Named for StdCmpObserver<'a, CM> where - CM: CmpMap, + CM: CmpMap + Serialize + DeserializeOwned, { fn name(&self) -> &str { &self.name @@ -225,7 +225,7 @@ where impl<'a, CM> StdCmpObserver<'a, CM> where - CM: CmpMap, + CM: CmpMap + Serialize + DeserializeOwned, { /// Creates a new [`StdCmpObserver`] with the given name and map. #[must_use] diff --git a/libafl/src/observers/mod.rs b/libafl/src/observers/mod.rs index 427695d4d4..823d671af1 100644 --- a/libafl/src/observers/mod.rs +++ b/libafl/src/observers/mod.rs @@ -20,7 +20,7 @@ use crate::{ /// Observers observe different information about the target. /// They can then be used by various sorts of feedback. -pub trait Observer: Named + serde::Serialize + serde::de::DeserializeOwned { +pub trait Observer: Named { /// The testcase finished execution, calculate any changes. /// Reserved for future use. #[inline] @@ -42,7 +42,7 @@ pub trait Observer: Named + serde::Serialize + serde::de::DeserializeOwned } /// A haskell-style tuple of observers -pub trait ObserversTuple: MatchName + serde::Serialize + serde::de::DeserializeOwned { +pub trait ObserversTuple: MatchName { /// This is called right before the next execution. fn pre_exec_all(&mut self, state: &mut S, input: &I) -> Result<(), Error>; diff --git a/libafl_targets/Cargo.toml b/libafl_targets/Cargo.toml index 9f064f6398..2acab6a850 100644 --- a/libafl_targets/Cargo.toml +++ b/libafl_targets/Cargo.toml @@ -27,4 +27,4 @@ cc = { version = "1.0", features = ["parallel"] } rangemap = "0.1.10" libafl = { path = "../libafl", version = "0.4.0", features = [] } serde = { version = "1.0", default-features = false, features = ["alloc"] } # serialization lib -serde-big-array = "0.3.2" +# serde-big-array = "0.3.2" diff --git a/libafl_targets/src/cmplog.rs b/libafl_targets/src/cmplog.rs index f923b6899d..2a65fcfd7e 100644 --- a/libafl_targets/src/cmplog.rs +++ b/libafl_targets/src/cmplog.rs @@ -8,15 +8,11 @@ use libafl::{ Error, }; -use serde::{Deserialize, Serialize}; - use crate::{CMPLOG_MAP_H, CMPLOG_MAP_W}; /// The `CmpLog` map size pub const CMPLOG_MAP_SIZE: usize = CMPLOG_MAP_W * CMPLOG_MAP_H; -big_array! { BigArray; } - /// `CmpLog` instruction kind pub const CMPLOG_KIND_INS: u8 = 0; /// `CmpLog` return kind @@ -24,7 +20,7 @@ pub const CMPLOG_KIND_RTN: u8 = 1; /// The header for `CmpLog` hits. #[repr(C)] -#[derive(Serialize, Deserialize, Default, Debug, Clone, Copy)] +#[derive(Default, Debug, Clone, Copy)] pub struct CmpLogHeader { hits: u16, shape: u8, @@ -33,16 +29,14 @@ pub struct CmpLogHeader { /// The operands logged during `CmpLog`. #[repr(C)] -#[derive(Serialize, Deserialize, Default, Debug, Clone, Copy)] +#[derive(Default, Debug, Clone, Copy)] pub struct CmpLogOperands(u64, u64); /// A struct containing the `CmpLog` metadata for a `LibAFL` run. #[repr(C)] -#[derive(Serialize, Deserialize, Debug, Clone, Copy)] +#[derive(Debug, Clone, Copy)] pub struct CmpLogMap { - #[serde(with = "BigArray")] headers: [CmpLogHeader; CMPLOG_MAP_W], - #[serde(with = "BigArray")] operands: [[CmpLogOperands; CMPLOG_MAP_H]; CMPLOG_MAP_W], } @@ -137,7 +131,6 @@ pub static mut libafl_cmplog_enabled: u8 = 0; pub use libafl_cmplog_enabled as CMPLOG_ENABLED; /// A [`CmpObserver`] observer for `CmpLog` -#[derive(Serialize, Deserialize, Debug)] pub struct CmpLogObserver<'a> { map: OwnedRefMut<'a, CmpLogMap>, size: Option>, diff --git a/libafl_targets/src/lib.rs b/libafl_targets/src/lib.rs index d7ec5abb01..63b3ccccb2 100644 --- a/libafl_targets/src/lib.rs +++ b/libafl_targets/src/lib.rs @@ -1,8 +1,5 @@ //! `libafl_targets` contains runtime code, injected in the target itself during compilation. -#[macro_use] -extern crate serde_big_array; - include!(concat!(env!("OUT_DIR"), "/constants.rs")); #[cfg(any(feature = "sancov_pcguard_edges", feature = "sancov_pcguard_hitcounts"))]