diff options
author | van Hauser <vh@thc.org> | 2020-06-14 16:08:58 +0200 |
---|---|---|
committer | van Hauser <vh@thc.org> | 2020-06-14 16:08:58 +0200 |
commit | ab142282a32f93725926d59899ab17a62e65f060 (patch) | |
tree | fdb76bf2ebc44abe83eaa7274b36c91c03e1428e /src | |
parent | bfe5b88e782ffd3f97c2a25da60b0b36552a6a64 (diff) | |
download | afl++-ab142282a32f93725926d59899ab17a62e65f060.tar.gz |
kill targets on exit
Diffstat (limited to 'src')
-rw-r--r-- | src/afl-forkserver.c | 7 | ||||
-rw-r--r-- | src/afl-fuzz.c | 19 |
2 files changed, 26 insertions, 0 deletions
diff --git a/src/afl-forkserver.c b/src/afl-forkserver.c index af06b5ff..1f61871a 100644 --- a/src/afl-forkserver.c +++ b/src/afl-forkserver.c @@ -466,6 +466,13 @@ void afl_fsrv_start(afl_forkserver_t *fsrv, char **argv, /* PARENT PROCESS */ + char pid_buf[16]; + sprintf(pid_buf, "%d", fsrv->fsrv_pid); + if (fsrv->cmplog_binary) + setenv("__AFL_TARGET_PID2", pid_buf, 1); + else + setenv("__AFL_TARGET_PID1", pid_buf, 1); + /* Close the unneeded endpoints. */ close(ctl_pipe[0]); diff --git a/src/afl-fuzz.c b/src/afl-fuzz.c index 46862613..b84585bb 100644 --- a/src/afl-fuzz.c +++ b/src/afl-fuzz.c @@ -31,6 +31,23 @@ extern u64 time_spent_working; #endif +static void at_exit() { + + int i; + char *ptr = getenv("__AFL_TARGET_PID1"); + + if (ptr && *ptr && (i = atoi(ptr)) > 0) + kill(i, SIGKILL); + + ptr = getenv("__AFL_TARGET_PID2"); + + if (ptr && *ptr && (i = atoi(ptr)) > 0) + kill(i, SIGKILL); + + // anything else? shared memory? + +} + static u8 *get_libradamsa_path(u8 *own_loc) { u8 *tmp, *cp, *rsl, *own_copy; @@ -1242,6 +1259,8 @@ int main(int argc, char **argv_orig, char **envp) { OKF("Cmplog forkserver successfully started"); } + + atexit(at_exit); perform_dry_run(afl); |