about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorhexcoder- <heiko@hexco.de>2020-02-17 22:29:17 +0100
committerhexcoder- <heiko@hexco.de>2020-02-17 22:29:17 +0100
commit8330e0e8baa9debdaabc7a09278b938c325b18a9 (patch)
treec70d9c0c7b8490695a852a8aba98dc120a9073da /src
parentdf55fb1f14050a5223229d5df9d0a76ba7b23521 (diff)
downloadafl++-8330e0e8baa9debdaabc7a09278b938c325b18a9.tar.gz
fix issue #198 AFL_TMPDIR is ignored for file .cur_input
Diffstat (limited to 'src')
-rw-r--r--src/afl-fuzz-init.c8
-rw-r--r--src/afl-fuzz.c16
2 files changed, 15 insertions, 9 deletions
diff --git a/src/afl-fuzz-init.c b/src/afl-fuzz-init.c
index bf2f63c9..bafb1d63 100644
--- a/src/afl-fuzz-init.c
+++ b/src/afl-fuzz-init.c
@@ -1224,11 +1224,11 @@ void maybe_delete_out_dir(void) {
 
   if (file_extension) {
 
-    fn = alloc_printf("%s/.cur_input.%s", out_dir, file_extension);
+    fn = alloc_printf("%s/.cur_input.%s", tmp_dir, file_extension);
 
   } else {
 
-    fn = alloc_printf("%s/.cur_input", out_dir);
+    fn = alloc_printf("%s/.cur_input", tmp_dir);
 
   }
 
@@ -1440,11 +1440,11 @@ void setup_stdio_file(void) {
   u8* fn;
   if (file_extension) {
 
-    fn = alloc_printf("%s/.cur_input.%s", out_dir, file_extension);
+    fn = alloc_printf("%s/.cur_input.%s", tmp_dir, file_extension);
 
   } else {
 
-    fn = alloc_printf("%s/.cur_input", out_dir);
+    fn = alloc_printf("%s/.cur_input", tmp_dir);
 
   }
 
diff --git a/src/afl-fuzz.c b/src/afl-fuzz.c
index 0c73ca2c..0609061c 100644
--- a/src/afl-fuzz.c
+++ b/src/afl-fuzz.c
@@ -655,11 +655,17 @@ int main(int argc, char** argv, char** envp) {
 
   if ((tmp_dir = getenv("AFL_TMPDIR")) != NULL) {
 
-    char tmpfile[strlen(tmp_dir + 16)];
-    sprintf(tmpfile, "%s/%s", tmp_dir, ".cur_input");
+    char tmpfile[file_extension 
+         ? strlen(tmp_dir) + 1 + 10 + 1 + strlen(file_extension) + 1
+         : strlen(tmp_dir) + 1 + 10 + 1];
+    if (file_extension) {
+      sprintf(tmpfile, "%s/.cur_input.%s", tmp_dir, file_extension);
+    } else {
+      sprintf(tmpfile, "%s/.cur_input", tmp_dir);
+    }
     if (access(tmpfile, F_OK) !=
         -1)  // there is still a race condition here, but well ...
-      FATAL("TMP_DIR already has an existing temporary input file: %s",
+      FATAL("AFL_TMPDIR already has an existing temporary input file: %s",
             tmpfile);
 
   } else
@@ -854,11 +860,11 @@ int main(int argc, char** argv, char** envp) {
 
         if (file_extension) {
 
-          out_file = alloc_printf("%s/.cur_input.%s", out_dir, file_extension);
+          out_file = alloc_printf("%s/.cur_input.%s", tmp_dir, file_extension);
 
         } else {
 
-          out_file = alloc_printf("%s/.cur_input", out_dir);
+          out_file = alloc_printf("%s/.cur_input", tmp_dir);
 
         }