Forkserver example updated (#404)

This commit is contained in:
Dongjia Zhang 2021-12-06 21:48:41 +09:00 committed by GitHub
parent c3ea7a042c
commit bfcb86a2e4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -34,14 +34,12 @@ pub fn main() {
Arg::new("executable") Arg::new("executable")
.about("The instrumented binary we want to fuzz") .about("The instrumented binary we want to fuzz")
.required(true) .required(true)
.index(1)
.takes_value(true), .takes_value(true),
) )
.arg( .arg(
Arg::new("in") Arg::new("in")
.about("The directory to read initial inputs from ('seeds')") .about("The directory to read initial inputs from ('seeds')")
.required(true) .required(true)
.index(2)
.takes_value(true), .takes_value(true),
) )
.arg( .arg(
@ -51,6 +49,11 @@ pub fn main() {
.long("timeout") .long("timeout")
.default_value("1200"), .default_value("1200"),
) )
.arg(
Arg::new("arguments")
.setting(clap::ArgSettings::MultipleValues)
.takes_value(true),
)
.get_matches(); .get_matches();
let corpus_dirs = vec![PathBuf::from(res.value_of("in").unwrap().to_string())]; 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); let mut fuzzer = StdFuzzer::new(scheduler, feedback, objective);
// Create the executor for the forkserver // Create the executor for the forkserver
let args = match res.values_of("arguments") {
Some(vec) => vec.map(|s| s.to_string()).collect::<Vec<String>>().to_vec(),
None => [].to_vec(),
};
let mut executor = TimeoutForkserverExecutor::new( let mut executor = TimeoutForkserverExecutor::new(
ForkserverExecutor::new( ForkserverExecutor::new(
res.value_of("executable").unwrap().to_string(), res.value_of("executable").unwrap().to_string(),
&[], &args,
true, true,
tuple_list!(edges_observer, time_observer), tuple_list!(edges_observer, time_observer),
) )