aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorNils Bars <nils.bars@rub.de>2022-10-24 17:52:04 +0200
committerNils Bars <nils.bars@rub.de>2022-10-24 17:54:03 +0200
commit102b749c0734165f1cb121397e4a4c307666b8eb (patch)
treed2a090fa114ede2091e752d3116ba8742f3dbcbb /src
parent7512316b46a25180729ff8c568a6061a0ab19fea (diff)
downloadafl++-102b749c0734165f1cb121397e4a4c307666b8eb.tar.gz
AFL_FORK_SERVER_KILL_SIGNAL backwards compatiblity
If `AFL_KILL_SIGNAL` is set, `AFL_FORK_SERVER_KILL_SIGNAL` is set to the same value.
Diffstat (limited to 'src')
-rw-r--r--src/afl-analyze.c5
-rw-r--r--src/afl-common.c23
-rw-r--r--src/afl-fuzz.c8
-rw-r--r--src/afl-showmap.c5
-rw-r--r--src/afl-tmin.c5
5 files changed, 30 insertions, 16 deletions
diff --git a/src/afl-analyze.c b/src/afl-analyze.c
index cbcd2ede..d356874d 100644
--- a/src/afl-analyze.c
+++ b/src/afl-analyze.c
@@ -1115,10 +1115,7 @@ int main(int argc, char **argv_orig, char **envp) {
}
- fsrv.child_kill_signal =
- parse_afl_kill_signal(getenv("AFL_KILL_SIGNAL"), SIGKILL);
- fsrv.fsrv_kill_signal =
- parse_afl_kill_signal(getenv("AFL_FORK_SERVER_KILL_SIGNAL"), SIGTERM);
+ configure_afl_kill_signals(&fsrv, NULL, NULL);
read_initial_file();
diff --git a/src/afl-common.c b/src/afl-common.c
index 75b463ed..f2934817 100644
--- a/src/afl-common.c
+++ b/src/afl-common.c
@@ -25,6 +25,7 @@
#include <stdlib.h>
#include <stdio.h>
+#include "forkserver.h"
#ifndef _GNU_SOURCE
#define _GNU_SOURCE
#endif
@@ -47,6 +48,7 @@
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
+#include <signal.h>
u8 be_quiet = 0;
u8 *doc_path = "";
@@ -476,6 +478,27 @@ int parse_afl_kill_signal(u8 *numeric_signal_as_str, int default_signal) {
return default_signal;
}
+void configure_afl_kill_signals(afl_forkserver_t *fsrv, char* afl_kill_signal_env, char* afl_fsrv_kill_signal_env) {
+ afl_kill_signal_env = afl_kill_signal_env ?
+ afl_kill_signal_env : getenv("AFL_KILL_SIGNAL");
+ afl_fsrv_kill_signal_env = afl_fsrv_kill_signal_env ?
+ afl_fsrv_kill_signal_env : getenv("AFL_FORK_SERVER_KILL_SIGNAL");
+
+ fsrv->child_kill_signal =
+ parse_afl_kill_signal(afl_kill_signal_env, SIGKILL);
+
+ if (afl_kill_signal_env && !afl_fsrv_kill_signal_env) {
+ /*
+ Set AFL_FORK_SERVER_KILL_SIGNAL to the value of AFL_KILL_SIGNAL for backwards
+ compatibility. However, if AFL_FORK_SERVER_KILL_SIGNAL is set, is takes precedence.
+ */
+ afl_fsrv_kill_signal_env = afl_kill_signal_env;
+ }
+ fsrv->fsrv_kill_signal =
+ parse_afl_kill_signal(afl_fsrv_kill_signal_env, SIGTERM);
+
+}
+
static inline unsigned int helper_min3(unsigned int a, unsigned int b,
unsigned int c) {
diff --git a/src/afl-fuzz.c b/src/afl-fuzz.c
index 573a6b42..7e4e20a0 100644
--- a/src/afl-fuzz.c
+++ b/src/afl-fuzz.c
@@ -25,6 +25,7 @@
#include "afl-fuzz.h"
#include "cmplog.h"
+#include "common.h"
#include <limits.h>
#include <stdlib.h>
#ifndef USEMMAP
@@ -1358,10 +1359,9 @@ int main(int argc, char **argv_orig, char **envp) {
#endif
- afl->fsrv.child_kill_signal =
- parse_afl_kill_signal(afl->afl_env.afl_child_kill_signal, SIGKILL);
- afl->fsrv.fsrv_kill_signal =
- parse_afl_kill_signal(afl->afl_env.afl_fsrv_kill_signal, SIGTERM);
+ configure_afl_kill_signals(&afl->fsrv,
+ afl->afl_env.afl_child_kill_signal,
+ afl->afl_env.afl_fsrv_kill_signal);
setup_signal_handlers();
check_asan_opts(afl);
diff --git a/src/afl-showmap.c b/src/afl-showmap.c
index 80a9e766..19288c04 100644
--- a/src/afl-showmap.c
+++ b/src/afl-showmap.c
@@ -1260,10 +1260,7 @@ int main(int argc, char **argv_orig, char **envp) {
: 0);
be_quiet = save_be_quiet;
- fsrv->child_kill_signal =
- parse_afl_kill_signal(getenv("AFL_KILL_SIGNAL"), SIGKILL);
- fsrv->fsrv_kill_signal =
- parse_afl_kill_signal(getenv("AFL_FORK_SERVER_KILL_SIGNAL"), SIGTERM);
+ configure_afl_kill_signals(fsrv, NULL, NULL);
if (new_map_size) {
diff --git a/src/afl-tmin.c b/src/afl-tmin.c
index d4660eb1..43636b6f 100644
--- a/src/afl-tmin.c
+++ b/src/afl-tmin.c
@@ -1197,10 +1197,7 @@ int main(int argc, char **argv_orig, char **envp) {
}
- fsrv->child_kill_signal =
- parse_afl_kill_signal(getenv("AFL_KILL_SIGNAL"), SIGKILL);
- fsrv->fsrv_kill_signal =
- parse_afl_kill_signal(getenv("AFL_FORK_SERVER_KILL_SIGNAL"), SIGTERM);
+ configure_afl_kill_signals(fsrv, NULL, NULL);
if (getenv("AFL_CRASH_EXITCODE")) {