about summary refs log tree commit diff
diff options
context:
space:
mode:
authorvanhauser-thc <vh@thc.org>2021-10-11 14:28:17 +0200
committervanhauser-thc <vh@thc.org>2021-10-11 14:28:24 +0200
commit00aa689f40a3c8276af257cf0b54dc655cb0423e (patch)
treebf3f27c537d2d80273d505d4ced7d9117a4eb4f9
parent9c1eb51e5cf0c2703c2a83c9289394fbcb634c0b (diff)
downloadafl++-00aa689f40a3c8276af257cf0b54dc655cb0423e.tar.gz
fix accidental bystander kills
-rw-r--r--docs/Changelog.md2
m---------qemu_mode/qemuafl0
-rw-r--r--src/afl-forkserver.c6
m---------unicorn_mode/unicornafl0
4 files changed, 5 insertions, 3 deletions
diff --git a/docs/Changelog.md b/docs/Changelog.md
index dad5fee2..1c3830f9 100644
--- a/docs/Changelog.md
+++ b/docs/Changelog.md
@@ -18,6 +18,8 @@ sending a mail to <afl-users+subscribe@googlegroups.com>.
     - fix -n dumb mode (nobody should use this)
   - afl-showmap, afl-tmin and afl-analyze now honor persistent mode
     for more speed. thanks to dloffre-snl for reporting!
+  - Prevent accidently killing non-afl/fuzz services when aborting
+    afl-showmap and other tools.
   - afl-cc:
     - fix for shared linking on MacOS
     - llvm and LTO mode verified to work with new llvm 14-dev
diff --git a/qemu_mode/qemuafl b/qemu_mode/qemuafl
-Subproject 71ed0d206fd3d877420dceb4993a1011a4637ae
+Subproject a6758d1cc3e4dde88fca3f0b3a903581b7c8b2e
diff --git a/src/afl-forkserver.c b/src/afl-forkserver.c
index c8c94c08..54f510c4 100644
--- a/src/afl-forkserver.c
+++ b/src/afl-forkserver.c
@@ -610,12 +610,12 @@ void afl_fsrv_start(afl_forkserver_t *fsrv, char **argv,
 
     if (!time_ms) {
 
-      kill(fsrv->fsrv_pid, fsrv->kill_signal);
+      if (fsrv->fsrv_pid > 0) { kill(fsrv->fsrv_pid, fsrv->kill_signal); }
 
     } else if (time_ms > fsrv->init_tmout) {
 
       fsrv->last_run_timed_out = 1;
-      kill(fsrv->fsrv_pid, fsrv->kill_signal);
+      if (fsrv->fsrv_pid > 0) { kill(fsrv->fsrv_pid, fsrv->kill_signal); }
 
     } else {
 
@@ -1248,7 +1248,7 @@ fsrv_run_result_t afl_fsrv_run_target(afl_forkserver_t *fsrv, u32 timeout,
     /* If there was no response from forkserver after timeout seconds,
     we kill the child. The forkserver should inform us afterwards */
 
-    kill(fsrv->child_pid, fsrv->kill_signal);
+    if (fsrv->child_pid > 0) { kill(fsrv->child_pid, fsrv->kill_signal); }
     fsrv->last_run_timed_out = 1;
     if (read(fsrv->fsrv_st_fd, &fsrv->child_status, 4) < 4) { exec_ms = 0; }
 
diff --git a/unicorn_mode/unicornafl b/unicorn_mode/unicornafl
-Subproject f1c853648a74b0157d233a2ef9f1693cfee78c1
+Subproject c0e03d2c6b55a22025324f121746b41b1e756fb