mirror of
https://github.com/AFLplusplus/AFLplusplus.git
synced 2025-06-17 12:18:08 +00:00
@ -608,19 +608,31 @@ void afl_fsrv_start(afl_forkserver_t *fsrv, char **argv,
|
||||
/* Wait for the fork server to come up, but don't wait too long. */
|
||||
|
||||
rlen = 0;
|
||||
if (fsrv->exec_tmout) {
|
||||
if (fsrv->init_tmout) {
|
||||
|
||||
u32 time_ms = read_s32_timed(fsrv->fsrv_st_fd, &status, fsrv->init_tmout,
|
||||
stop_soon_p);
|
||||
|
||||
if (!time_ms) {
|
||||
|
||||
if (fsrv->fsrv_pid > 0) { kill(fsrv->fsrv_pid, fsrv->kill_signal); }
|
||||
s32 tmp_pid = fsrv->fsrv_pid;
|
||||
if (tmp_pid > 0) {
|
||||
|
||||
kill(tmp_pid, fsrv->kill_signal);
|
||||
fsrv->fsrv_pid = -1;
|
||||
|
||||
}
|
||||
|
||||
} else if (time_ms > fsrv->init_tmout) {
|
||||
|
||||
fsrv->last_run_timed_out = 1;
|
||||
if (fsrv->fsrv_pid > 0) { kill(fsrv->fsrv_pid, fsrv->kill_signal); }
|
||||
s32 tmp_pid = fsrv->fsrv_pid;
|
||||
if (tmp_pid > 0) {
|
||||
|
||||
kill(tmp_pid, fsrv->kill_signal);
|
||||
fsrv->fsrv_pid = -1;
|
||||
|
||||
}
|
||||
|
||||
} else {
|
||||
|
||||
@ -1259,7 +1271,14 @@ fsrv_run_result_t afl_fsrv_run_target(afl_forkserver_t *fsrv, u32 timeout,
|
||||
/* If there was no response from forkserver after timeout seconds,
|
||||
we kill the child. The forkserver should inform us afterwards */
|
||||
|
||||
if (fsrv->child_pid > 0) { kill(fsrv->child_pid, fsrv->kill_signal); }
|
||||
s32 tmp_pid = fsrv->child_pid;
|
||||
if (tmp_pid > 0) {
|
||||
|
||||
kill(tmp_pid, fsrv->kill_signal);
|
||||
fsrv->child_pid = -1;
|
||||
|
||||
}
|
||||
|
||||
fsrv->last_run_timed_out = 1;
|
||||
if (read(fsrv->fsrv_st_fd, &fsrv->child_status, 4) < 4) { exec_ms = 0; }
|
||||
|
||||
@ -1293,7 +1312,7 @@ fsrv_run_result_t afl_fsrv_run_target(afl_forkserver_t *fsrv, u32 timeout,
|
||||
|
||||
}
|
||||
|
||||
if (!WIFSTOPPED(fsrv->child_status)) { fsrv->child_pid = 0; }
|
||||
if (!WIFSTOPPED(fsrv->child_status)) { fsrv->child_pid = -1; }
|
||||
|
||||
fsrv->total_execs++;
|
||||
|
||||
|
Reference in New Issue
Block a user