fork server: restore SIGCHLD handler for child process
MODIFY
instrumentation/afl-compiler-rt.o.c
instrumentation/afl-compiler-rt.o.c
@@ -670,8 +670,7 @@ static void __afl_start_snapshots(void) {
u8 child_stopped = 0;
- signal(SIGCHLD, SIG_DFL);
- void (*old_sigchld_handler)(int) = 0;
+ void (*old_sigchld_handler)(int) = signal(SIGCHLD, SIG_DFL);
/* Phone home and tell the parent that we're OK. If parent isn't there,
assume we're not running in forkserver mode and just execute program. */
@@ -927,8 +926,7 @@ static void __afl_start_forkserver(void) {
u8 child_stopped = 0;
- signal(SIGCHLD, SIG_DFL);
- void (*old_sigchld_handler)(int) = 0;
+ void (*old_sigchld_handler)(int) = signal(SIGCHLD, SIG_DFL);
if (__afl_map_size <= FS_OPT_MAX_MAPSIZE) {

fork server: restore SIGCHLD handler for child process