fix fork server kill signals for qemu, unicorn and nyx mode

This commit is contained in:
vanhauser-thc
2022-10-29 10:00:36 +02:00
parent a6a26d8153
commit 0b6007a49c
6 changed files with 19 additions and 9 deletions

View File

@ -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. */ is NULL, the appropiate values are read from the environment. */
void configure_afl_kill_signals(afl_forkserver_t *fsrv, void configure_afl_kill_signals(afl_forkserver_t *fsrv,
char *afl_kill_signal_env, 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 /* Read a bitmap from file fname to memory
This is for the -B option again. */ This is for the -B option again. */

View File

@ -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(); read_initial_file();
(void)check_binary_signatures(fsrv.target_path); (void)check_binary_signatures(fsrv.target_path);

View File

@ -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, void configure_afl_kill_signals(afl_forkserver_t *fsrv,
char *afl_kill_signal_env, 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 ? afl_kill_signal_env : getenv("AFL_KILL_SIGNAL"); 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 = fsrv->fsrv_kill_signal = parse_afl_kill_signal(afl_fsrv_kill_signal_env,
parse_afl_kill_signal(afl_fsrv_kill_signal_env, SIGTERM); default_server_kill_signal);
} }

View File

@ -1362,8 +1362,12 @@ int main(int argc, char **argv_orig, char **envp) {
#endif #endif
configure_afl_kill_signals(&afl->fsrv, afl->afl_env.afl_child_kill_signal, configure_afl_kill_signals(
afl->afl_env.afl_fsrv_kill_signal); &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(); setup_signal_handlers();
check_asan_opts(afl); check_asan_opts(afl);

View File

@ -1264,7 +1264,9 @@ int main(int argc, char **argv_orig, char **envp) {
: 0); : 0);
be_quiet = save_be_quiet; 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) { if (new_map_size) {

View File

@ -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")) { if (getenv("AFL_CRASH_EXITCODE")) {