aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorvan Hauser <vh@thc.org>2020-05-06 00:58:13 +0200
committerGitHub <noreply@github.com>2020-05-06 00:58:13 +0200
commitdf5215783414ddda7d9f371ccef5acb2235f66d0 (patch)
tree52ca748f7a90c9deb09d9380c19f8220f0f45105 /src
parentc7de368dc20078116bcb2e34b0f2237127802841 (diff)
parenta13958b32b6a1d8cba6f82b0d1ad03801721e3ef (diff)
downloadafl++-df5215783414ddda7d9f371ccef5acb2235f66d0.tar.gz
Merge pull request #352 from AFLplusplus/dev
Pull to master because of crash in string compare transform
Diffstat (limited to 'src')
-rw-r--r--src/afl-common.c7
-rw-r--r--src/afl-forkserver.c15
-rw-r--r--src/afl-tmin.c2
3 files changed, 12 insertions, 12 deletions
diff --git a/src/afl-common.c b/src/afl-common.c
index dda62219..54b2e790 100644
--- a/src/afl-common.c
+++ b/src/afl-common.c
@@ -69,9 +69,10 @@ char *afl_environment_variables[] = {
"AFL_LLVM_LAF_SPLIT_SWITCHES", "AFL_LLVM_LAF_TRANSFORM_COMPARES",
"AFL_LLVM_MAP_ADDR", "AFL_LLVM_MAP_DYNAMIC", "AFL_LLVM_NGRAM_SIZE",
"AFL_NGRAM_SIZE", "AFL_LLVM_NOT_ZERO", "AFL_LLVM_WHITELIST",
- "AFL_NO_AFFINITY", "AFL_LLVM_LTO_STARTID", "AFL_LLVM_LTO_DONTWRITEID",
- "AFL_NO_ARITH", "AFL_NO_BUILTIN", "AFL_NO_CPU_RED", "AFL_NO_FORKSRV",
- "AFL_NO_UI", "AFL_NO_PYTHON",
+ "AFL_LLVM_SKIP_NEVERZERO", "AFL_NO_AFFINITY", "AFL_LLVM_LTO_STARTID",
+ "AFL_LLVM_LTO_DONTWRITEID", "AFL_NO_ARITH", "AFL_NO_BUILTIN",
+ "AFL_NO_CPU_RED", "AFL_NO_FORKSRV", "AFL_NO_UI", "AFL_NO_PYTHON",
+ "AFL_UNTRACER_FILE",
"AFL_NO_X86", // not really an env but we dont want to warn on it
"AFL_MAP_SIZE", "AFL_MAPSIZE", "AFL_PATH", "AFL_PERFORMANCE_FILE",
//"AFL_PERSISTENT", // not implemented anymore, so warn additionally
diff --git a/src/afl-forkserver.c b/src/afl-forkserver.c
index d5a60077..c1623f22 100644
--- a/src/afl-forkserver.c
+++ b/src/afl-forkserver.c
@@ -790,8 +790,6 @@ fsrv_run_result_t afl_fsrv_run_target(afl_forkserver_t *fsrv, u32 timeout,
s32 res;
u32 exec_ms;
- int status = 0;
-
/* After this memset, fsrv->trace_bits[] are effectively volatile, so we
must prevent any earlier operations from venturing into that
territory. */
@@ -821,7 +819,8 @@ fsrv_run_result_t afl_fsrv_run_target(afl_forkserver_t *fsrv, u32 timeout,
if (fsrv->child_pid <= 0) { FATAL("Fork server is misbehaving (OOM?)"); }
- exec_ms = read_timed(fsrv->fsrv_st_fd, &status, 4, timeout, stop_soon_p);
+ exec_ms = read_timed(fsrv->fsrv_st_fd, &fsrv->child_status, 4, timeout,
+ stop_soon_p);
if (exec_ms > timeout) {
@@ -830,7 +829,7 @@ fsrv_run_result_t afl_fsrv_run_target(afl_forkserver_t *fsrv, u32 timeout,
kill(fsrv->child_pid, SIGKILL);
fsrv->last_run_timed_out = 1;
- if (read(fsrv->fsrv_st_fd, &status, 4) < 4) { exec_ms = 0; }
+ if (read(fsrv->fsrv_st_fd, &fsrv->child_status, 4) < 4) { exec_ms = 0; }
}
@@ -862,7 +861,7 @@ fsrv_run_result_t afl_fsrv_run_target(afl_forkserver_t *fsrv, u32 timeout,
}
- if (!WIFSTOPPED(status)) { fsrv->child_pid = 0; }
+ if (!WIFSTOPPED(fsrv->child_status)) { fsrv->child_pid = 0; }
fsrv->total_execs++;
@@ -874,9 +873,9 @@ fsrv_run_result_t afl_fsrv_run_target(afl_forkserver_t *fsrv, u32 timeout,
/* Report outcome to caller. */
- if (WIFSIGNALED(status) && !*stop_soon_p) {
+ if (WIFSIGNALED(fsrv->child_status) && !*stop_soon_p) {
- fsrv->last_kill_signal = WTERMSIG(status);
+ fsrv->last_kill_signal = WTERMSIG(fsrv->child_status);
if (fsrv->last_run_timed_out && fsrv->last_kill_signal == SIGKILL) {
@@ -891,7 +890,7 @@ fsrv_run_result_t afl_fsrv_run_target(afl_forkserver_t *fsrv, u32 timeout,
/* A somewhat nasty hack for MSAN, which doesn't support abort_on_error and
must use a special exit code. */
- if (fsrv->uses_asan && WEXITSTATUS(status) == MSAN_ERROR) {
+ if (fsrv->uses_asan && WEXITSTATUS(fsrv->child_status) == MSAN_ERROR) {
fsrv->last_kill_signal = 0;
return FSRV_RUN_CRASH;
diff --git a/src/afl-tmin.c b/src/afl-tmin.c
index d6fbd493..98568473 100644
--- a/src/afl-tmin.c
+++ b/src/afl-tmin.c
@@ -839,7 +839,7 @@ int main(int argc, char **argv_orig, char **envp) {
if (out_file) { FATAL("Multiple -f options not supported"); }
fsrv->use_stdin = 0;
- out_file = optarg;
+ out_file = ck_strdup(optarg);
break;
case 'e':