diff fuzz/fuzz-common.c @ 1758:1365661f6be6

Disable stderr output for fuzzer by default
author Matt Johnston <matt@ucc.asn.au>
date Sat, 24 Oct 2020 22:40:08 +0800
parents 517fb7b62438
children 2406a9987810
line wrap: on
line diff
--- a/fuzz/fuzz-common.c	Fri Oct 23 23:32:44 2020 +0800
+++ b/fuzz/fuzz-common.c	Sat Oct 24 22:40:08 2020 +0800
@@ -11,12 +11,21 @@
 #include "atomicio.h"
 #include "fuzz-wrapfd.h"
 
+/* fuzz.h redefines stderr, we don't want that here */
+#undef stderr
+
 struct dropbear_fuzz_options fuzz;
 
 static void fuzz_dropbear_log(int UNUSED(priority), const char* format, va_list param);
 static void load_fixed_hostkeys(void);
 static void load_fixed_client_key(void);
 
+// This runs automatically before main, due to contructor attribute in fuzz.h
+void fuzz_early_setup(void) {
+    /* Set stderr to point to normal stderr by default */
+    fuzz.stderr = stderr;
+}
+
 void fuzz_common_setup(void) {
 	disallow_core();
     fuzz.fuzzing = 1;
@@ -28,6 +37,18 @@
     fuzz_seed("start", 5);
     /* let any messages get flushed */
     setlinebuf(stdout);
+#if DEBUG_TRACE
+    if (debug_trace)
+    {
+        fprintf(stderr, "Dropbear fuzzer: -v specified, not disabling stderr output\n");
+    }
+    else
+#endif
+    {
+        fprintf(stderr, "Dropbear fuzzer: Disabling stderr output\n");
+        fuzz.stderr = fopen("/dev/null", "w");
+        assert(fuzz.stderr);
+    }
 }
 
 int fuzz_set_input(const uint8_t *Data, size_t Size) {