diff options
author | Dominik Maier <domenukk@gmail.com> | 2020-05-30 11:02:34 +0200 |
---|---|---|
committer | Dominik Maier <domenukk@gmail.com> | 2020-05-30 11:02:34 +0200 |
commit | 38e5c32a55086d36c8b9ee38e4b20c15517fc4b2 (patch) | |
tree | 30f7eebc1a1725b31904c3cec9fd7c5d459ff27f /src/afl-forkserver.c | |
parent | 0c50945303e12cbe46cfb98578bbe129305018c4 (diff) | |
download | afl++-38e5c32a55086d36c8b9ee38e4b20c15517fc4b2.tar.gz |
corrected read_timed for values > 4
Diffstat (limited to 'src/afl-forkserver.c')
-rw-r--r-- | src/afl-forkserver.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/src/afl-forkserver.c b/src/afl-forkserver.c index 137a4f99..01774cd0 100644 --- a/src/afl-forkserver.c +++ b/src/afl-forkserver.c @@ -401,6 +401,8 @@ void afl_fsrv_start(afl_forkserver_t *fsrv, char **argv, fsrv->fsrv_ctl_fd = ctl_pipe[1]; fsrv->fsrv_st_fd = st_pipe[0]; + set_nonblocking(fsrv->fsrv_st_fd); + /* Wait for the fork server to come up, but don't wait too long. */ rlen = 0; @@ -853,7 +855,9 @@ fsrv_run_result_t afl_fsrv_run_target(afl_forkserver_t *fsrv, u32 timeout, fsrv->last_run_timed_out = 0; - if ((res = read(fsrv->fsrv_st_fd, &fsrv->child_pid, 4)) != 4) { + res = read_timed(fsrv->fsrv_st_fd, &fsrv->child_pid, 4, timeout, stop_soon_p); + + if (res < 0 || res > timeout) { if (*stop_soon_p) { return 0; } RPFATAL(res, "Unable to request new process from fork server (OOM?)"); |