From cf5b4dfb180d65cb267ec1297df5cb52acbdcfef Mon Sep 17 00:00:00 2001 From: Andrea Fioraldi Date: Mon, 29 Nov 2021 14:28:55 +0100 Subject: [PATCH] OnDiskMetadata --- libafl/src/corpus/ondisk.rs | 13 ++++++++----- libafl/src/corpus/testcase.rs | 12 ++++++++++++ 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/libafl/src/corpus/ondisk.rs b/libafl/src/corpus/ondisk.rs index 1086e57163..65e560c061 100644 --- a/libafl/src/corpus/ondisk.rs +++ b/libafl/src/corpus/ondisk.rs @@ -1,14 +1,17 @@ //! The ondisk corpus stores unused testcases to disk. use alloc::vec::Vec; -use core::cell::RefCell; +use core::{cell::RefCell, time::Duration}; use serde::{Deserialize, Serialize}; use std::{fs::OpenOptions, path::PathBuf}; #[cfg(feature = "std")] use std::{fs, fs::File, io::Write}; -use crate::{corpus::Corpus, corpus::Testcase, inputs::Input, state::HasMetadata, Error}; +use crate::{ + bolts::serdeany::SerdeAnyMap, corpus::Corpus, corpus::Testcase, inputs::Input, + state::HasMetadata, Error, +}; /// Options for the the format of the on-disk metadata #[cfg(feature = "std")] @@ -109,9 +112,9 @@ where let mut tmpfile = File::create(&tmpfile_name)?; let serialized = match self.meta_format.as_ref().unwrap() { - OnDiskMetadataFormat::Postcard => postcard::to_allocvec(testcase.metadata())?, - OnDiskMetadataFormat::Json => serde_json::to_vec(testcase.metadata())?, - OnDiskMetadataFormat::JsonPretty => serde_json::to_vec_pretty(testcase.metadata())?, + OnDiskMetadataFormat::Postcard => postcard::to_allocvec(&ondisk_meta)?, + OnDiskMetadataFormat::Json => serde_json::to_vec(&ondisk_meta)?, + OnDiskMetadataFormat::JsonPretty => serde_json::to_vec_pretty(&ondisk_meta)?, }; tmpfile.write_all(&serialized)?; fs::rename(&tmpfile_name, &filename)?; diff --git a/libafl/src/corpus/testcase.rs b/libafl/src/corpus/testcase.rs index 346fb9720d..c71504d1f7 100644 --- a/libafl/src/corpus/testcase.rs +++ b/libafl/src/corpus/testcase.rs @@ -138,6 +138,18 @@ where self.exec_time = Some(time); } + /// Get the executions + #[inline] + pub fn executions(&self) -> &usize { + &self.executions + } + + /// Get the executions (mut) + #[inline] + pub fn executions_mut(&mut self) -> &mut usize { + &mut self.executions + } + /// Create a new Testcase instace given an input #[inline] pub fn new(input: T) -> Self