about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--include/common.h2
-rw-r--r--src/afl-analyze.c2
-rw-r--r--src/afl-common.c4
-rw-r--r--src/afl-forkserver.c9
-rw-r--r--src/afl-fuzz.c2
-rw-r--r--src/afl-showmap.c4
-rw-r--r--src/afl-tmin.c2
7 files changed, 17 insertions, 8 deletions
diff --git a/include/common.h b/include/common.h
index fc5d3c38..5afc5ee3 100644
--- a/include/common.h
+++ b/include/common.h
@@ -31,7 +31,7 @@
 #include "types.h"
 #include "stdbool.h"
 
-void detect_file_args(char** argv, u8* prog_in, u8 use_stdin);
+void detect_file_args(char** argv, u8* prog_in, u8 *use_stdin);
 void check_environment_vars(char** env);
 
 char** get_qemu_argv(u8* own_loc, u8** target_path_p, int argc, char** argv);
diff --git a/src/afl-analyze.c b/src/afl-analyze.c
index 30d71298..7d78ffc8 100644
--- a/src/afl-analyze.c
+++ b/src/afl-analyze.c
@@ -1009,7 +1009,7 @@ int main(int argc, char** argv, char** envp) {
   set_up_environment();
 
   find_binary(argv[optind]);
-  detect_file_args(argv + optind, prog_in, use_stdin);
+  detect_file_args(argv + optind, prog_in, &use_stdin);
 
   if (qemu_mode) {
 
diff --git a/src/afl-common.c b/src/afl-common.c
index f175f604..67ff2a1b 100644
--- a/src/afl-common.c
+++ b/src/afl-common.c
@@ -38,7 +38,7 @@
 
 extern u8 be_quiet;
 
-void detect_file_args(char** argv, u8* prog_in, u8 use_stdin) {
+void detect_file_args(char** argv, u8* prog_in, u8 *use_stdin) {
 
   u32 i = 0;
 #ifdef __GLIBC__
@@ -149,7 +149,7 @@ char **create_file_args(int argc, char** argv, u8* prog_in, u8 use_stdin) {
 
       if (!prog_in) FATAL("@@ syntax is not supported by this tool.");
 
-      use_stdin = 0;
+      *use_stdin = 0;
 
       if (prog_in[0] != 0) {  // not afl-showmap special case
 
diff --git a/src/afl-forkserver.c b/src/afl-forkserver.c
index f7b84248..60c84cde 100644
--- a/src/afl-forkserver.c
+++ b/src/afl-forkserver.c
@@ -135,6 +135,15 @@ void handle_timeout(int sig) {
 
 void afl_fsrv_init(afl_forkserver_t *fsrv) {
 
+  uint32_t i, j = 0;
+
+  // this is the default and is != 0 so we need to set it if fsrv is still
+  // uninitialized
+  for (i = 0; i < sizeof(afl_forkserver_t) && j == 0; i++)
+    if (((char*)fsrv)[i] != 0)
+      j = 1;
+  if (j == 0)
+    fsrv->use_stdin = 1;
   list_append(&fsrv_list, fsrv);
 
 }
diff --git a/src/afl-fuzz.c b/src/afl-fuzz.c
index 35cf582c..4b6ced7a 100644
--- a/src/afl-fuzz.c
+++ b/src/afl-fuzz.c
@@ -942,7 +942,7 @@ int main(int argc, char** argv, char** envp) {
         }
 
         detect_file_args(argv + optind + 1, afl->fsrv.out_file,
-                         afl->fsrv.use_stdin);
+                         &afl->fsrv.use_stdin);
         break;
 
       }
diff --git a/src/afl-showmap.c b/src/afl-showmap.c
index 26f166a5..771fa733 100644
--- a/src/afl-showmap.c
+++ b/src/afl-showmap.c
@@ -899,11 +899,11 @@ int main(int argc, char** argv, char** envp) {
   if (in_dir) {
 
     if (at_file) PFATAL("Options -A and -i are mutually exclusive");
-    detect_file_args(argv + optind, "", fsrv->use_stdin);
+    detect_file_args(argv + optind, "", &fsrv->use_stdin);
 
   } else {
 
-    detect_file_args(argv + optind, at_file, fsrv->use_stdin);
+    detect_file_args(argv + optind, at_file, &fsrv->use_stdin);
 
   }
 
diff --git a/src/afl-tmin.c b/src/afl-tmin.c
index df8d289f..5a29bec1 100644
--- a/src/afl-tmin.c
+++ b/src/afl-tmin.c
@@ -1274,7 +1274,7 @@ int main(int argc, char** argv, char** envp) {
   set_up_environment(fsrv);
 
   find_binary(fsrv, argv[optind]);
-  detect_file_args(argv + optind, fsrv->out_file, fsrv->use_stdin);
+  detect_file_args(argv + optind, fsrv->out_file, &fsrv->use_stdin);
 
   if (qemu_mode) {