aboutsummaryrefslogtreecommitdiff
path: root/src/test/fuzz/fuzz_hsdescv2.c
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2016-12-19 15:11:27 -0500
committerNick Mathewson <nickm@torproject.org>2017-01-30 08:37:24 -0500
commitb1567cf500044be4d6c97e4ef65345acb4aa70ff (patch)
treeb1f4c05392d00fc5e37b67ca0b67578788d0c447 /src/test/fuzz/fuzz_hsdescv2.c
parent83e9918107dba1b969a226b79e1d37a852339e45 (diff)
downloadtor-b1567cf500044be4d6c97e4ef65345acb4aa70ff.tar.gz
tor-b1567cf500044be4d6c97e4ef65345acb4aa70ff.zip
Three more fuzzers: consensus, hsdesc, intro points
Diffstat (limited to 'src/test/fuzz/fuzz_hsdescv2.c')
-rw-r--r--src/test/fuzz/fuzz_hsdescv2.c52
1 files changed, 52 insertions, 0 deletions
diff --git a/src/test/fuzz/fuzz_hsdescv2.c b/src/test/fuzz/fuzz_hsdescv2.c
new file mode 100644
index 0000000000..53b7cbe2f7
--- /dev/null
+++ b/src/test/fuzz/fuzz_hsdescv2.c
@@ -0,0 +1,52 @@
+/* Copyright (c) 2016, The Tor Project, Inc. */
+/* See LICENSE for licensing information */
+#define ROUTERPARSE_PRIVATE
+#include "or.h"
+#include "routerparse.h"
+#include "rendcommon.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)
+{
+ rend_service_descriptor_t *desc = NULL;
+ char desc_id[64];
+ char *ipts = NULL;
+ size_t ipts_size, esize;
+ const char *next;
+ char *str = tor_memdup_nulterm(data, sz);
+ (void) rend_parse_v2_service_descriptor(&desc, desc_id, &ipts, &ipts_size,
+ &esize, &next, str, 1);
+ if (desc) {
+ log_debug(LD_GENERAL, "Parsing okay");
+ rend_service_descriptor_free(desc);
+ } else {
+ log_debug(LD_GENERAL, "Parsing failed");
+ }
+ tor_free(ipts);
+ tor_free(str);
+ return 0;
+}
+