about summary refs log tree commit diff
path: root/src/afl-common.c
diff options
context:
space:
mode:
authorDominik Maier <domenukk@gmail.com>2020-05-29 18:58:25 +0200
committerGitHub <noreply@github.com>2020-05-29 18:58:25 +0200
commit408ef5298bd2f233649dd6799757369e963b0a24 (patch)
tree3d4e66ad80c81c1ab658f349dbf4894d6f848b7f /src/afl-common.c
parent2ce243bc6eee4b9d5830bf04369881cb8ee7f93b (diff)
parent4b01d594c40b4e59414413152392963f3cf5247d (diff)
downloadafl++-408ef5298bd2f233649dd6799757369e963b0a24.tar.gz
Merge pull request #383 from dgmelski/fix-read-timed
Fix read_timed when accumulating short reads
Diffstat (limited to 'src/afl-common.c')
-rw-r--r--src/afl-common.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/afl-common.c b/src/afl-common.c
index 1bb58a60..9fd4bf03 100644
--- a/src/afl-common.c
+++ b/src/afl-common.c
@@ -885,9 +885,9 @@ u32 read_timed(s32 fd, void *buf, size_t len, u32 timeout_ms,
   timeout.tv_usec = (timeout_ms % 1000) * 1000;
 
   size_t read_total = 0;
-  size_t len_read = 0;
+  ssize_t len_read = 0;
 
-  while (len_read < len) {
+  while (read_total < len) {
 
     /* set exceptfds as well to return when a child exited/closed the pipe. */
     int sret = select(fd + 1, &readfds, NULL, NULL, &timeout);
@@ -905,8 +905,8 @@ u32 read_timed(s32 fd, void *buf, size_t len, u32 timeout_ms,
 
     }
 
-    len_read = read(fd, ((u8 *)buf) + len_read, len - len_read);
-    if (!len_read) { return 0; }
+    len_read = read(fd, ((u8 *)buf) + read_total, len - read_total);
+    if (len_read <= 0) { return 0; }
     read_total += len_read;
 
   }