From b3d68e8f404203a2a139ad8f3429ff6aeeccec54 Mon Sep 17 00:00:00 2001 From: Tamas K Lengyel Date: Mon, 21 Feb 2022 10:49:04 -0500 Subject: [PATCH] Add signal option to forkserver_simple (#548) --- fuzzers/forkserver_simple/Cargo.toml | 1 + fuzzers/forkserver_simple/src/main.rs | 14 +++++++++++--- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/fuzzers/forkserver_simple/Cargo.toml b/fuzzers/forkserver_simple/Cargo.toml index c88ccad546..a882547e61 100644 --- a/fuzzers/forkserver_simple/Cargo.toml +++ b/fuzzers/forkserver_simple/Cargo.toml @@ -18,3 +18,4 @@ opt-level = 3 [dependencies] libafl = { path = "../../libafl/" } clap = { version = "3.0", features = ["default"] } +nix = "0.23" diff --git a/fuzzers/forkserver_simple/src/main.rs b/fuzzers/forkserver_simple/src/main.rs index 644300a0dc..4f3dc1bb01 100644 --- a/fuzzers/forkserver_simple/src/main.rs +++ b/fuzzers/forkserver_simple/src/main.rs @@ -1,3 +1,4 @@ +use clap::{App, Arg}; use core::time::Duration; use libafl::{ bolts::{ @@ -23,10 +24,9 @@ use libafl::{ stages::mutational::StdMutationalStage, state::{HasCorpus, HasMetadata, StdState}, }; +use nix::sys::signal::Signal; use std::path::PathBuf; -use clap::{App, Arg}; - #[allow(clippy::similar_names)] pub fn main() { let res = App::new("forkserver_simple") @@ -62,6 +62,13 @@ pub fn main() { .setting(clap::ArgSettings::MultipleValues) .takes_value(true), ) + .arg( + Arg::new("signal") + .help("Signal used to stop child") + .short('s') + .long("signal") + .default_value("SIGKILL"), + ) .get_matches(); let corpus_dirs = vec![PathBuf::from(res.value_of("in").unwrap().to_string())]; @@ -155,7 +162,7 @@ pub fn main() { .build(tuple_list!(time_observer, edges_observer)) .unwrap(); - let mut executor = TimeoutForkserverExecutor::new( + let mut executor = TimeoutForkserverExecutor::with_signal( forkserver, Duration::from_millis( res.value_of("timeout") @@ -164,6 +171,7 @@ pub fn main() { .parse() .expect("Could not parse timeout in milliseconds"), ), + res.value_of("signal").unwrap().parse::().unwrap(), ) .expect("Failed to create the executor.");