about summary refs log tree commit diff
diff options
context:
space:
mode:
authorvan Hauser <vh@thc.org>2021-01-20 10:01:34 +0100
committervan Hauser <vh@thc.org>2021-01-20 10:01:34 +0100
commit9dff3495d54c0bd3da59ef43ca25df06c6d9f2c2 (patch)
treed1602faa849d23b1e0e6ed2a20895c797111726a
parente7b572af3608e2d097aad17408ad4853befdc02c (diff)
downloadafl++-9dff3495d54c0bd3da59ef43ca25df06c6d9f2c2.tar.gz
better cmp map fsrv fix
-rw-r--r--src/afl-forkserver.c4
-rw-r--r--src/afl-fuzz-cmplog.c2
-rw-r--r--src/afl-fuzz.c14
3 files changed, 5 insertions, 15 deletions
diff --git a/src/afl-forkserver.c b/src/afl-forkserver.c
index 39f044f2..c1b3d02f 100644
--- a/src/afl-forkserver.c
+++ b/src/afl-forkserver.c
@@ -58,7 +58,9 @@ static list_t fsrv_list = {.element_prealloc_count = 0};
 
 static void fsrv_exec_child(afl_forkserver_t *fsrv, char **argv) {
 
-  if (fsrv->qemu_mode) setenv("AFL_DISABLE_LLVM_INSTRUMENTATION", "1", 0);
+  if (fsrv->qemu_mode) { setenv("AFL_DISABLE_LLVM_INSTRUMENTATION", "1", 0); }
+  
+  unsetenv(CMPLOG_SHM_ENV_VAR);  // we do not want that in non-cmplog fsrv
 
   execv(fsrv->target_path, argv);
 
diff --git a/src/afl-fuzz-cmplog.c b/src/afl-fuzz-cmplog.c
index 8ffc6e1b..27c6c413 100644
--- a/src/afl-fuzz-cmplog.c
+++ b/src/afl-fuzz-cmplog.c
@@ -33,6 +33,8 @@ void cmplog_exec_child(afl_forkserver_t *fsrv, char **argv) {
 
   setenv("___AFL_EINS_ZWEI_POLIZEI___", "1", 1);
 
+  if (fsrv->qemu_mode) { setenv("AFL_DISABLE_LLVM_INSTRUMENTATION", "1", 0); }
+
   if (!fsrv->qemu_mode && argv[0] != fsrv->cmplog_binary) {
 
     argv[0] = fsrv->cmplog_binary;
diff --git a/src/afl-fuzz.c b/src/afl-fuzz.c
index 0f76e8a3..88c40ee8 100644
--- a/src/afl-fuzz.c
+++ b/src/afl-fuzz.c
@@ -1515,21 +1515,7 @@ int main(int argc, char **argv_orig, char **envp) {
 
   }
 
-  u8 *save_env = NULL;
-  if (afl->cmplog_binary) {
-
-    save_env = ck_strdup(getenv(CMPLOG_SHM_ENV_VAR));
-    unsetenv(CMPLOG_SHM_ENV_VAR);  // normal forkserver should not have this
-
-  }
-
   perform_dry_run(afl);
-  if (save_env) {
-
-    setenv(CMPLOG_SHM_ENV_VAR, save_env, 1);  // needed for at_exit()
-    ck_free(save_env);
-
-  }
 
   /*
     if (!user_set_cache && afl->q_testcase_max_cache_size) {