[tor-commits] [tor/master] Add microdesc format fuzzer.

nickm at torproject.org nickm at torproject.org
Mon Jan 30 13:45:47 UTC 2017


commit 4afb155db2d9aaafe8dd1517e9619e6bd9c95751
Author: Nick Mathewson <nickm at torproject.org>
Date:   Wed Dec 14 17:03:54 2016 -0500

    Add microdesc format fuzzer.
---
 src/test/fuzz/dict/microdesc   |  7 +++++++
 src/test/fuzz/fuzz_microdesc.c | 45 ++++++++++++++++++++++++++++++++++++++++++
 src/test/fuzz/include.am       | 12 ++++++++++-
 3 files changed, 63 insertions(+), 1 deletion(-)

diff --git a/src/test/fuzz/dict/microdesc b/src/test/fuzz/dict/microdesc
new file mode 100644
index 0000000..fdd0567
--- /dev/null
+++ b/src/test/fuzz/dict/microdesc
@@ -0,0 +1,7 @@
+"onion-key"
+"ntor-onion-key"
+"id"
+"a"
+"family"
+"p"
+"p6"
diff --git a/src/test/fuzz/fuzz_microdesc.c b/src/test/fuzz/fuzz_microdesc.c
new file mode 100644
index 0000000..bb94459
--- /dev/null
+++ b/src/test/fuzz/fuzz_microdesc.c
@@ -0,0 +1,45 @@
+#define ROUTERPARSE_PRIVATE
+#include "or.h"
+#include "routerparse.h"
+#include "microdesc.h"
+#include "fuzzing.h"
+
+static void
+mock_dump_desc__nodump(const char *desc, const char *type)
+{
+  (void)desc;
+  (void)type;
+}
+
+int
+fuzz_init(void)
+{
+  disable_signature_checking();
+  MOCK(dump_desc, mock_dump_desc__nodump);
+  ed25519_init();
+  return 0;
+}
+
+int
+fuzz_cleanup(void)
+{
+  return 0;
+}
+
+int
+fuzz_main(const uint8_t *data, size_t sz)
+{
+  const char *str = (const char*) data;
+  smartlist_t *result = microdescs_parse_from_string((const char *)str,
+                                                     str+sz,
+                                                     0, SAVED_NOWHERE, NULL);
+  if (result) {
+    log_debug(LD_GENERAL, "Parsing okay: %d", smartlist_len(result));
+    SMARTLIST_FOREACH(result, microdesc_t *, md, microdesc_free(md));
+    smartlist_free(result);
+  } else {
+    log_debug(LD_GENERAL, "Parsing failed");
+  }
+  return 0;
+}
+
diff --git a/src/test/fuzz/include.am b/src/test/fuzz/include.am
index 16e5d30..bfe3808 100644
--- a/src/test/fuzz/include.am
+++ b/src/test/fuzz/include.am
@@ -47,12 +47,22 @@ src_test_fuzz_fuzz_extrainfo_CFLAGS = $(FUZZING_CFLAGS)
 src_test_fuzz_fuzz_extrainfo_LDFLAGS = $(FUZZING_LDFLAG)
 src_test_fuzz_fuzz_extrainfo_LDADD = $(FUZZING_LIBS)
 
+src_test_fuzz_fuzz_microdesc_SOURCES = \
+	src/test/fuzz/fuzzing_common.c \
+	src/test/fuzz/fuzz_microdesc.c
+src_test_fuzz_fuzz_microdesc_CPPFLAGS = $(FUZZING_CPPFLAGS)
+src_test_fuzz_fuzz_microdesc_CFLAGS = $(FUZZING_CFLAGS)
+src_test_fuzz_fuzz_microdesc_LDFLAGS = $(FUZZING_LDFLAG)
+src_test_fuzz_fuzz_microdesc_LDADD = $(FUZZING_LIBS)
+
 FUZZERS = \
 	src/test/fuzz/fuzz-descriptor \
 	src/test/fuzz/fuzz-extrainfo \
-	src/test/fuzz/fuzz-http
+	src/test/fuzz/fuzz-http \
+	src/test/fuzz/fuzz-microdesc
 
 noinst_PROGRAMS += $(FUZZERS)
 fuzzers: $(FUZZERS)
 
 
+





More information about the tor-commits mailing list