From bfcb86a2e4fa10436ea2ab7015d99abbe622e67e Mon Sep 17 00:00:00 2001 From: Dongjia Zhang Date: Mon, 6 Dec 2021 21:48:41 +0900 Subject: [PATCH] Forkserver example updated (#404) --- fuzzers/forkserver_simple/src/main.rs | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/fuzzers/forkserver_simple/src/main.rs b/fuzzers/forkserver_simple/src/main.rs index a28c10202d..4f390bab61 100644 --- a/fuzzers/forkserver_simple/src/main.rs +++ b/fuzzers/forkserver_simple/src/main.rs @@ -34,14 +34,12 @@ pub fn main() { Arg::new("executable") .about("The instrumented binary we want to fuzz") .required(true) - .index(1) .takes_value(true), ) .arg( Arg::new("in") .about("The directory to read initial inputs from ('seeds')") .required(true) - .index(2) .takes_value(true), ) .arg( @@ -51,6 +49,11 @@ pub fn main() { .long("timeout") .default_value("1200"), ) + .arg( + Arg::new("arguments") + .setting(clap::ArgSettings::MultipleValues) + .takes_value(true), + ) .get_matches(); let corpus_dirs = vec![PathBuf::from(res.value_of("in").unwrap().to_string())]; @@ -124,10 +127,15 @@ pub fn main() { let mut fuzzer = StdFuzzer::new(scheduler, feedback, objective); // Create the executor for the forkserver + let args = match res.values_of("arguments") { + Some(vec) => vec.map(|s| s.to_string()).collect::>().to_vec(), + None => [].to_vec(), + }; + let mut executor = TimeoutForkserverExecutor::new( ForkserverExecutor::new( res.value_of("executable").unwrap().to_string(), - &[], + &args, true, tuple_list!(edges_observer, time_observer), )