diff options
author | vanhauser-thc <vh@thc.org> | 2022-10-29 10:00:36 +0200 |
---|---|---|
committer | vanhauser-thc <vh@thc.org> | 2022-10-29 10:00:36 +0200 |
commit | 0b6007a49cda8d9fc7eb03c73fa5c05f47141072 (patch) | |
tree | 68a1ebaf160d8a752717298b581fb5936dc38e27 /src | |
parent | a6a26d8153a177782f999f20d33b4cfc5f9e3790 (diff) | |
download | afl++-0b6007a49cda8d9fc7eb03c73fa5c05f47141072.tar.gz |
fix fork server kill signals for qemu, unicorn and nyx mode
Diffstat (limited to 'src')
-rw-r--r-- | src/afl-analyze.c | 3 | ||||
-rw-r--r-- | src/afl-common.c | 7 | ||||
-rw-r--r-- | src/afl-fuzz.c | 8 | ||||
-rw-r--r-- | src/afl-showmap.c | 4 | ||||
-rw-r--r-- | src/afl-tmin.c | 3 |
5 files changed, 17 insertions, 8 deletions
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")) { |