about summary refs log tree commit diff
path: root/src/afl-forkserver.c
diff options
context:
space:
mode:
authorDominik Maier <domenukk@gmail.com>2020-03-30 00:50:04 +0200
committerDominik Maier <domenukk@gmail.com>2020-04-01 13:10:06 +0200
commit452067ffca0de664fa4a11211c54f34c3842f20e (patch)
tree5796aa0fb75091579be89ac48fe364b553e31555 /src/afl-forkserver.c
parent3ce5efc44b9d3e41d2928553fee2e51681c955d2 (diff)
downloadafl++-452067ffca0de664fa4a11211c54f34c3842f20e.tar.gz
added read_timed
Diffstat (limited to 'src/afl-forkserver.c')
-rw-r--r--src/afl-forkserver.c24
1 files changed, 7 insertions, 17 deletions
diff --git a/src/afl-forkserver.c b/src/afl-forkserver.c
index 2dd7a9f0..01a606c3 100644
--- a/src/afl-forkserver.c
+++ b/src/afl-forkserver.c
@@ -164,10 +164,9 @@ static void afl_fauxsrv_execv(afl_forkserver_t *fsrv, char **argv) {
 
 void afl_fsrv_start(afl_forkserver_t *fsrv, char **argv) {
 
-  struct timeval timeout;
-  int            st_pipe[2], ctl_pipe[2];
-  int            status;
-  s32            rlen;
+  int st_pipe[2], ctl_pipe[2];
+  int status;
+  s32 rlen;
 
   if (fsrv->use_fauxsrv) ACTF("Using Fauxserver:");
 
@@ -318,24 +317,15 @@ void afl_fsrv_start(afl_forkserver_t *fsrv, char **argv) {
   rlen = 0;
   if (fsrv->exec_tmout) {
 
-    fd_set readfds;
+    rlen = 4;
+    u32 time = read_timed(fsrv->fsrv_st_fd, &status, rlen,
+                          fsrv->exec_tmout * FORK_WAIT_MULT);
 
-    FD_ZERO(&readfds);
-    FD_SET(fsrv->fsrv_st_fd, &readfds);
-    timeout.tv_sec = ((fsrv->exec_tmout * FORK_WAIT_MULT) / 1000);
-    timeout.tv_usec = ((fsrv->exec_tmout * FORK_WAIT_MULT) % 1000) * 1000;
-
-    int sret = select(fsrv->fsrv_st_fd + 1, &readfds, NULL, NULL, &timeout);
-
-    if (sret == 0) {
+    if (!time) {
 
       fsrv->child_timed_out = 1;
       kill(fsrv->child_pid, SIGKILL);
 
-    } else {
-
-      rlen = read(fsrv->fsrv_st_fd, &status, 4);
-
     }
 
   } else {