aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorvan Hauser <vh@thc.org>2020-03-09 19:40:59 +0100
committervan Hauser <vh@thc.org>2020-03-09 19:40:59 +0100
commit73a1b39446f604698181add181d2b2489a635333 (patch)
treede63594f8322d8f3937859b192b88b937a64f65b /src
parent253bbf3a5c4323c33952f0408df6afbcd9310603 (diff)
downloadafl++-73a1b39446f604698181add181d2b2489a635333.tar.gz
quickfix for first big bug that use_stdin was not correctly initialized and could not be set
Diffstat (limited to 'src')
-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
6 files changed, 16 insertions, 7 deletions
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) {