summaryrefslogtreecommitdiffhomepage
path: root/fuzz.h
diff options
context:
space:
mode:
authorMatt Johnston <matt@ucc.asn.au>2020-10-24 22:40:08 +0800
committerMatt Johnston <matt@ucc.asn.au>2020-10-24 22:40:08 +0800
commitc7cfa75e92c2fd00bcf1336973c51fa10d05610f (patch)
tree8df0831e88f2e4c926ddc33d6d2300ae4bafb82b /fuzz.h
parentcb252296c56bad82a053bd2de056d489505101be (diff)
Disable stderr output for fuzzer by default
Diffstat (limited to 'fuzz.h')
-rw-r--r--fuzz.h15
1 files changed, 15 insertions, 0 deletions
diff --git a/fuzz.h b/fuzz.h
index eb22c04..f25a835 100644
--- a/fuzz.h
+++ b/fuzz.h
@@ -15,6 +15,10 @@ void fuzz_common_setup(void);
void fuzz_svr_setup(void);
void fuzz_cli_setup(void);
+// constructor attribute so it runs before main(), including
+// in non-fuzzing mode.
+void fuzz_early_setup(void) __attribute__((constructor));
+
// must be called once per fuzz iteration.
// returns DROPBEAR_SUCCESS or DROPBEAR_FAILURE
int fuzz_set_input(const uint8_t *Data, size_t Size);
@@ -68,10 +72,21 @@ struct dropbear_fuzz_options {
int dumping;
// the file descriptor
int recv_dumpfd;
+
+ // avoid filling fuzzing logs, this points to /dev/null
+ FILE *stderr;
};
extern struct dropbear_fuzz_options fuzz;
+/* This is a bodge but seems to work.
+ glibc stdio.h has the comment
+ "C89/C99 say they're macros. Make them happy." */
+#ifdef stderr
+#undef stderr
+#endif
+#define stderr (fuzz.stderr)
+
#endif // DROPBEAR_FUZZ
#endif /* DROPBEAR_FUZZ_H */