about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorvanhauser-thc <vh@thc.org>2022-07-07 09:03:46 +0200
committervanhauser-thc <vh@thc.org>2022-07-07 09:03:46 +0200
commit1759859ae2795ac5538b3a8e682d807d394c663e (patch)
tree2d966fc6becd411c0e8744837a8c8ecf3041dab5 /src
parente6f27c2645bd3e4d4a8163b7432818e26dedfeef (diff)
downloadafl++-1759859ae2795ac5538b3a8e682d807d394c663e.tar.gz
fix double free on exit for -c 0 on src cmplog
Diffstat (limited to 'src')
-rw-r--r--src/afl-cc.c33
-rw-r--r--src/afl-fuzz.c2
2 files changed, 18 insertions, 17 deletions
diff --git a/src/afl-cc.c b/src/afl-cc.c
index 96342659..246e01cd 100644
--- a/src/afl-cc.c
+++ b/src/afl-cc.c
@@ -424,21 +424,21 @@ static void edit_params(u32 argc, char **argv, char **envp) {
 
     char *fplugin_arg;
 
-    if (cmplog_mode)
-      {
-	fplugin_arg = alloc_printf("-fplugin=%s/afl-gcc-cmplog-pass.so",
-				   obj_path);
-	cc_params[cc_par_cnt++] = fplugin_arg;
-	fplugin_arg = alloc_printf("-fplugin=%s/afl-gcc-cmptrs-pass.so",
-				   obj_path);
-	cc_params[cc_par_cnt++] = fplugin_arg;
-      }
-    else
-      {
-	fplugin_arg = alloc_printf("-fplugin=%s/afl-gcc-pass.so",
-				   obj_path);
-	cc_params[cc_par_cnt++] = fplugin_arg;
-      }
+    if (cmplog_mode) {
+
+      fplugin_arg =
+          alloc_printf("-fplugin=%s/afl-gcc-cmplog-pass.so", obj_path);
+      cc_params[cc_par_cnt++] = fplugin_arg;
+      fplugin_arg =
+          alloc_printf("-fplugin=%s/afl-gcc-cmptrs-pass.so", obj_path);
+      cc_params[cc_par_cnt++] = fplugin_arg;
+
+    } else {
+
+      fplugin_arg = alloc_printf("-fplugin=%s/afl-gcc-pass.so", obj_path);
+      cc_params[cc_par_cnt++] = fplugin_arg;
+
+    }
 
     cc_params[cc_par_cnt++] = "-fno-if-conversion";
     cc_params[cc_par_cnt++] = "-fno-if-conversion2";
@@ -2166,7 +2166,8 @@ int main(int argc, char **argv, char **envp) {
 
   }
 
-  cmplog_mode = getenv("AFL_CMPLOG") || getenv("AFL_LLVM_CMPLOG") || getenv("AFL_GCC_CMPLOG");
+  cmplog_mode = getenv("AFL_CMPLOG") || getenv("AFL_LLVM_CMPLOG") ||
+                getenv("AFL_GCC_CMPLOG");
 
 #if !defined(__ANDROID__) && !defined(ANDROID)
   ptr = find_object("afl-compiler-rt.o", argv[0]);
diff --git a/src/afl-fuzz.c b/src/afl-fuzz.c
index b23cef37..18367cf2 100644
--- a/src/afl-fuzz.c
+++ b/src/afl-fuzz.c
@@ -1469,7 +1469,7 @@ int main(int argc, char **argv_orig, char **envp) {
   if (afl->shm.cmplog_mode &&
       (!strcmp("-", afl->cmplog_binary) || !strcmp("0", afl->cmplog_binary))) {
 
-    afl->cmplog_binary = argv[optind];
+    afl->cmplog_binary = strdup(argv[optind]);
 
   }