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, - } + }) } }