about summary refs log tree commit diff
path: root/src/afl-tmin.c
diff options
context:
space:
mode:
authorvanhauser-thc <vh@thc.org>2021-10-23 20:54:24 +0200
committervanhauser-thc <vh@thc.org>2021-10-23 20:54:24 +0200
commite03897a0703673aa0de7772185a5b5230641cb6a (patch)
tree6a7137d56fa0dd743fed4be96f7a1bc91354f158 /src/afl-tmin.c
parent06b23c7dcba0738266e85609f3fcadeb7c1b3560 (diff)
downloadafl++-e03897a0703673aa0de7772185a5b5230641cb6a.tar.gz
fix timeout bug in afl tools
Diffstat (limited to 'src/afl-tmin.c')
-rw-r--r--src/afl-tmin.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/afl-tmin.c b/src/afl-tmin.c
index 4f3a6b80..ce2a0b8f 100644
--- a/src/afl-tmin.c
+++ b/src/afl-tmin.c
@@ -120,6 +120,17 @@ static const u8 count_class_lookup[256] = {
 #undef TIMES8
 #undef TIMES4
 
+static void kill_child() {
+
+  if (fsrv->child_pid > 0) {
+
+    kill(fsrv->child_pid, fsrv->kill_signal);
+    fsrv->child_pid = -1;
+
+  }
+
+}
+
 static sharedmem_t *deinit_shmem(afl_forkserver_t *fsrv,
                                  sharedmem_t *     shm_fuzz) {
 
@@ -1125,6 +1136,7 @@ int main(int argc, char **argv_orig, char **envp) {
   fsrv->target_path = find_binary(argv[optind]);
   fsrv->trace_bits = afl_shm_init(&shm, map_size, 0);
   detect_file_args(argv + optind, out_file, &fsrv->use_stdin);
+  signal(SIGALRM, kill_child);
 
   if (fsrv->qemu_mode) {