From 061a8dd77ccd3f698e4c42b1fc4fe7a4167031e9 Mon Sep 17 00:00:00 2001 From: Dominik Maier Date: Mon, 1 Mar 2021 02:27:21 +0100 Subject: [PATCH] OnDiskCorpus autocreates dictionaries --- fuzzers/libfuzzer_libpng/src/fuzzer.rs | 2 +- libafl/src/corpus/ondisk.rs | 11 +++++++---- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/fuzzers/libfuzzer_libpng/src/fuzzer.rs b/fuzzers/libfuzzer_libpng/src/fuzzer.rs index 7a338a4282..edbcb92e38 100644 --- a/fuzzers/libfuzzer_libpng/src/fuzzer.rs +++ b/fuzzers/libfuzzer_libpng/src/fuzzer.rs @@ -92,7 +92,7 @@ fn fuzz(corpus_dirs: Vec, objective_dir: PathBuf, broker_port: u16) -> tuple_list!(MaxMapFeedback::new_with_observer(&edges_observer)), // Corpus in which we store solutions (crashes in this example), // on disk so the user can get them after stopping the fuzzer - OnDiskCorpus::new(objective_dir), + OnDiskCorpus::new(objective_dir).unwrap(), // Feedbacks to recognize an input as solution tuple_list!(CrashFeedback::new()), ) diff --git a/libafl/src/corpus/ondisk.rs b/libafl/src/corpus/ondisk.rs index d4d8706f92..b87301ff5e 100644 --- a/libafl/src/corpus/ondisk.rs +++ b/libafl/src/corpus/ondisk.rs @@ -5,7 +5,7 @@ use core::cell::RefCell; use serde::{Deserialize, Serialize}; #[cfg(feature = "std")] -use std::path::PathBuf; +use std::{fs, path::PathBuf}; use crate::{corpus::Corpus, corpus::Testcase, inputs::Input, Error}; @@ -94,11 +94,14 @@ impl OnDiskCorpus where I: Input, { - pub fn new(dir_path: PathBuf) -> Self { - Self { + /// Creates the OnDiskCorpus. + /// Will error, if `std::fs::create_dir_all` failed for `dir_path`. + pub fn new(dir_path: PathBuf) -> Result { + fs::create_dir_all(&dir_path)?; + Ok(Self { entries: vec![], current: None, dir_path: dir_path, - } + }) } }