From 5daec436f93240a0c411d432456f3f86fe1f3181 Mon Sep 17 00:00:00 2001 From: Andrea Fioraldi Date: Mon, 13 Apr 2020 11:43:34 +0200 Subject: fix bug forksever fail not detected when using read_timed --- src/afl-forkserver.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/afl-forkserver.c b/src/afl-forkserver.c index 9c964bf3..28f664fa 100644 --- a/src/afl-forkserver.c +++ b/src/afl-forkserver.c @@ -352,19 +352,24 @@ void afl_fsrv_start(afl_forkserver_t *fsrv, char **argv, rlen = 0; if (fsrv->exec_tmout) { - rlen = 4; - u32 time = read_timed(fsrv->fsrv_st_fd, &status, rlen, + u32 time = read_timed(fsrv->fsrv_st_fd, &status, 4, fsrv->exec_tmout * FORK_WAIT_MULT, stop_soon_p); - if (time > fsrv->exec_tmout * FORK_WAIT_MULT) { + if (!time) { + + kill(fsrv->fsrv_pid, SIGKILL); + + } else if (time > fsrv->exec_tmout * FORK_WAIT_MULT) { fsrv->child_timed_out = 1; kill(fsrv->fsrv_pid, SIGKILL); + } else { + + rlen = 4; + } - if (!time) { kill(fsrv->fsrv_pid, SIGKILL); } - } else { rlen = read(fsrv->fsrv_st_fd, &status, 4); -- cgit 1.4.1