about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--include/common.h3
-rw-r--r--src/afl-analyze.c3
-rw-r--r--src/afl-common.c7
-rw-r--r--src/afl-fuzz.c8
-rw-r--r--src/afl-showmap.c4
-rw-r--r--src/afl-tmin.c3
6 files changed, 19 insertions, 9 deletions
diff --git a/include/common.h b/include/common.h
index f6d1dd1a..9d9a948c 100644
--- a/include/common.h
+++ b/include/common.h
@@ -79,7 +79,8 @@ int parse_afl_kill_signal(u8 *numeric_signal_as_str, int default_signal);
    is NULL, the appropiate values are read from the environment. */
 void configure_afl_kill_signals(afl_forkserver_t *fsrv,
                                 char             *afl_kill_signal_env,
-                                char             *afl_fsrv_kill_signal_env);
+                                char             *afl_fsrv_kill_signal_env,
+                                int               default_server_kill_signal);
 
 /* Read a bitmap from file fname to memory
    This is for the -B option again. */
diff --git a/src/afl-analyze.c b/src/afl-analyze.c
index 757c9306..8293c51a 100644
--- a/src/afl-analyze.c
+++ b/src/afl-analyze.c
@@ -1115,7 +1115,8 @@ int main(int argc, char **argv_orig, char **envp) {
 
   }
 
-  configure_afl_kill_signals(&fsrv, NULL, NULL);
+  configure_afl_kill_signals(
+      &fsrv, NULL, NULL, (fsrv.qemu_mode || unicorn_mode) ? SIGKILL : SIGTERM);
 
   read_initial_file();
   (void)check_binary_signatures(fsrv.target_path);
diff --git a/src/afl-common.c b/src/afl-common.c
index 6f5e4a38..31005804 100644
--- a/src/afl-common.c
+++ b/src/afl-common.c
@@ -484,7 +484,8 @@ int parse_afl_kill_signal(u8 *numeric_signal_as_str, int default_signal) {
 
 void configure_afl_kill_signals(afl_forkserver_t *fsrv,
                                 char             *afl_kill_signal_env,
-                                char             *afl_fsrv_kill_signal_env) {
+                                char             *afl_fsrv_kill_signal_env,
+                                int               default_server_kill_signal) {
 
   afl_kill_signal_env =
       afl_kill_signal_env ? afl_kill_signal_env : getenv("AFL_KILL_SIGNAL");
@@ -505,8 +506,8 @@ void configure_afl_kill_signals(afl_forkserver_t *fsrv,
 
   }
 
-  fsrv->fsrv_kill_signal =
-      parse_afl_kill_signal(afl_fsrv_kill_signal_env, SIGTERM);
+  fsrv->fsrv_kill_signal = parse_afl_kill_signal(afl_fsrv_kill_signal_env,
+                                                 default_server_kill_signal);
 
 }
 
diff --git a/src/afl-fuzz.c b/src/afl-fuzz.c
index 6ff4d266..11cb3c67 100644
--- a/src/afl-fuzz.c
+++ b/src/afl-fuzz.c
@@ -1362,8 +1362,12 @@ int main(int argc, char **argv_orig, char **envp) {
 
   #endif
 
-  configure_afl_kill_signals(&afl->fsrv, afl->afl_env.afl_child_kill_signal,
-                             afl->afl_env.afl_fsrv_kill_signal);
+  configure_afl_kill_signals(
+      &afl->fsrv, afl->afl_env.afl_child_kill_signal,
+      afl->afl_env.afl_fsrv_kill_signal,
+      (afl->fsrv.qemu_mode || afl->unicorn_mode || afl->fsrv.nyx_mode)
+          ? SIGKILL
+          : SIGTERM);
 
   setup_signal_handlers();
   check_asan_opts(afl);
diff --git a/src/afl-showmap.c b/src/afl-showmap.c
index ce1f8004..311fdc35 100644
--- a/src/afl-showmap.c
+++ b/src/afl-showmap.c
@@ -1264,7 +1264,9 @@ int main(int argc, char **argv_orig, char **envp) {
                                  : 0);
     be_quiet = save_be_quiet;
 
-    configure_afl_kill_signals(fsrv, NULL, NULL);
+    configure_afl_kill_signals(
+        fsrv, NULL, NULL,
+        (fsrv->qemu_mode || unicorn_mode) ? SIGKILL : SIGTERM);
 
     if (new_map_size) {
 
diff --git a/src/afl-tmin.c b/src/afl-tmin.c
index 3a27b879..b6a6d390 100644
--- a/src/afl-tmin.c
+++ b/src/afl-tmin.c
@@ -1198,7 +1198,8 @@ int main(int argc, char **argv_orig, char **envp) {
 
   }
 
-  configure_afl_kill_signals(fsrv, NULL, NULL);
+  configure_afl_kill_signals(
+      fsrv, NULL, NULL, (fsrv->qemu_mode || unicorn_mode) ? SIGKILL : SIGTERM);
 
   if (getenv("AFL_CRASH_EXITCODE")) {