From e4b3cc542a50a15e664866e67ec72ac2486d1126 Mon Sep 17 00:00:00 2001 From: Toka Date: Mon, 31 May 2021 22:44:56 +0900 Subject: [PATCH] Forkserver_simple uses TimeoutForkserverExecutor (#139) * forkserver_simple uses TimeoutforkserverExecutor * fmt * from_millis --- fuzzers/forkserver_simple/src/main.rs | 20 ++++++++++++-------- libafl/src/executors/forkserver.rs | 4 ++-- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/fuzzers/forkserver_simple/src/main.rs b/fuzzers/forkserver_simple/src/main.rs index 563fcc213b..f92d6a541c 100644 --- a/fuzzers/forkserver_simple/src/main.rs +++ b/fuzzers/forkserver_simple/src/main.rs @@ -1,5 +1,4 @@ -use std::path::PathBuf; - +use core::time::Duration; use libafl::{ bolts::{ current_nanos, @@ -12,7 +11,7 @@ use libafl::{ QueueCorpusScheduler, }, events::SimpleEventManager, - executors::forkserver::ForkserverExecutor, + executors::forkserver::{ForkserverExecutor, TimeoutForkserverExecutor}, feedback_and, feedback_or, feedbacks::{CrashFeedback, MapFeedbackState, MaxMapFeedback, TimeFeedback}, fuzzer::{Fuzzer, StdFuzzer}, @@ -23,6 +22,7 @@ use libafl::{ state::{HasCorpus, StdState}, stats::SimpleStats, }; +use std::path::PathBuf; #[allow(clippy::similar_names)] pub fn main() { @@ -96,12 +96,16 @@ pub fn main() { let mut fuzzer = StdFuzzer::new(scheduler, feedback, objective); // Create the executor for the forkserver - let mut executor = ForkserverExecutor::new( - "../../libafl_tests/src/forkserver_test.o".to_string(), - &[], - tuple_list!(edges_observer, time_observer), + let mut executor = TimeoutForkserverExecutor::new( + ForkserverExecutor::new( + "../../libafl_tests/src/forkserver_test.o".to_string(), + &[], + tuple_list!(edges_observer, time_observer), + ) + .unwrap(), + Duration::from_millis(5000), ) - .expect("Failed to create the Executor"); + .expect("Failed to create the executor."); // In case the corpus is empty (on first run), reset if state.corpus().count() < 1 { diff --git a/libafl/src/executors/forkserver.rs b/libafl/src/executors/forkserver.rs index 0e690bc821..ed59c2e254 100644 --- a/libafl/src/executors/forkserver.rs +++ b/libafl/src/executors/forkserver.rs @@ -389,8 +389,8 @@ where // We need to kill the child in case he has timed out, or we can't get the correct pid in the next call to self.executor.forkserver_mut().read_st()? kill(self.executor.forkserver().child_pid(), Signal::SIGKILL)?; - let (recv_status_len, exit_code) = self.executor.forkserver_mut().read_st()?; - if recv_status_len != 4 || exit_code != 9 { + let (recv_status_len, _) = self.executor.forkserver_mut().read_st()?; + if recv_status_len != 4 { return Err(Error::Forkserver( "Could not kill timed-out child".to_string(), ));