diff options
author | van Hauser <vh@thc.org> | 2024-07-01 08:57:38 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-07-01 08:57:38 +0200 |
commit | 53409530b369e560c7f6f37ead5a5db9e116efd0 (patch) | |
tree | 6449fa84e6b9e26849d298af881014b18f55dc0b /src/afl-forkserver.c | |
parent | 36db3428ab16156dd72196213d2a02a5eadaed11 (diff) | |
parent | 43014cd465eec8cc47eda041802001776dbb5dd5 (diff) | |
download | afl++-53409530b369e560c7f6f37ead5a5db9e116efd0.tar.gz |
Merge pull request #2141 from AFLplusplus/dev
push to stable
Diffstat (limited to 'src/afl-forkserver.c')
-rw-r--r-- | src/afl-forkserver.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/src/afl-forkserver.c b/src/afl-forkserver.c index 71d8570d..cec91f76 100644 --- a/src/afl-forkserver.c +++ b/src/afl-forkserver.c @@ -252,6 +252,10 @@ void afl_fsrv_init(afl_forkserver_t *fsrv) { fsrv->uses_crash_exitcode = false; fsrv->uses_asan = false; +#ifdef __AFL_CODE_COVERAGE + fsrv->persistent_trace_bits = NULL; +#endif + fsrv->init_child_func = fsrv_exec_child; list_append(&fsrv_list, fsrv); @@ -278,12 +282,19 @@ void afl_fsrv_init_dup(afl_forkserver_t *fsrv_to, afl_forkserver_t *from) { fsrv_to->fsrv_kill_signal = from->fsrv_kill_signal; fsrv_to->debug = from->debug; +#ifdef __AFL_CODE_COVERAGE + fsrv_to->persistent_trace_bits = from->persistent_trace_bits; +#endif + // These are forkserver specific. fsrv_to->out_dir_fd = -1; fsrv_to->child_pid = -1; fsrv_to->use_fauxsrv = 0; fsrv_to->last_run_timed_out = 0; + fsrv_to->late_send = from->late_send; + fsrv_to->custom_data_ptr = from->custom_data_ptr; + fsrv_to->init_child_func = from->init_child_func; // Note: do not copy ->add_extra_func or ->persistent_record* @@ -1944,6 +1955,13 @@ afl_fsrv_run_target(afl_forkserver_t *fsrv, u32 timeout, } + if (unlikely(fsrv->late_send)) { + + fsrv->late_send(fsrv->custom_data_ptr, fsrv->custom_input, + fsrv->custom_input_len); + + } + exec_ms = read_s32_timed(fsrv->fsrv_st_fd, &fsrv->child_status, timeout, stop_soon_p); |