From 4af9af784f0dea6619fc8283d91d814e711e88c0 Mon Sep 17 00:00:00 2001 From: Andrea Fioraldi Date: Fri, 9 Jul 2021 14:35:31 +0200 Subject: [PATCH] Serialize CmpValuesMetadata to an empty object to save space on State serialize --- libafl/src/observers/cmp.rs | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/libafl/src/observers/cmp.rs b/libafl/src/observers/cmp.rs index aba2530e36..11486fe132 100644 --- a/libafl/src/observers/cmp.rs +++ b/libafl/src/observers/cmp.rs @@ -5,7 +5,7 @@ use alloc::{ vec::Vec, }; -use serde::{de::DeserializeOwned, Deserialize, Serialize}; +use serde::{de::DeserializeOwned, Deserialize, Serialize, Serializer}; use crate::{ bolts::{ownedref::OwnedRefMut, tuples::Named, AsSlice}, @@ -45,7 +45,7 @@ impl CmpValues { } /// A state metadata holding a list of values logged from comparisons -#[derive(Default, Serialize, Deserialize)] +#[derive(Default, Deserialize)] pub struct CmpValuesMetadata { /// A `list` of values. pub list: Vec, @@ -53,6 +53,17 @@ pub struct CmpValuesMetadata { crate::impl_serdeany!(CmpValuesMetadata); +impl Serialize for CmpValuesMetadata { + /// Serialzie to an empty object, we don't need to keep it in State after reset + fn serialize(&self, se: S) -> Result + where + S: Serializer, + { + let empty = CmpValuesMetadata::new(); + empty.serialize(se) + } +} + impl AsSlice for CmpValuesMetadata { /// Convert to a slice #[must_use]