Commit 45bb6ae6 authored by Nick Mathewson's avatar Nick Mathewson 🤹
Browse files

Merge remote-tracking branch 'tor-gitlab/mr/407'

parents a11a9bb3 66c5bbb4
Loading
Loading
Loading
Loading
+3 −0
Original line number Original line Diff line number Diff line
@@ -6,6 +6,9 @@ from __future__ import print_function
from __future__ import unicode_literals
from __future__ import unicode_literals


FUZZERS = """
FUZZERS = """
	hexdigest
	address
	addressPTR
	consensus
	consensus
	descriptor
	descriptor
	diff
	diff
+73 −0
Original line number Original line Diff line number Diff line
#include "lib/net/address.h"
#include "lib/net/socket.h"
#include "lib/cc/ctassert.h"
#include "lib/container/smartlist.h"
#include "lib/ctime/di_ops.h"
#include "lib/log/log.h"
#include "lib/log/escape.h"
#include "lib/malloc/malloc.h"
#include "lib/net/inaddr.h"
#include "lib/string/compat_ctype.h"
#include "lib/string/compat_string.h"
#include "lib/string/parse_int.h"
#include "lib/string/printf.h"
#include "lib/string/util_string.h"

#include "ext/siphash.h"

#ifdef HAVE_SYS_TIME_H
#include <sys/time.h>
#endif
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#endif
#ifdef HAVE_ERRNO_H
#include <errno.h>
#endif
#ifdef HAVE_ARPA_INET_H
#include <arpa/inet.h>
#endif
#ifdef HAVE_SYS_SOCKET_H
#include <sys/socket.h>
#endif
#ifdef HAVE_NETDB_H
#include <netdb.h>
#endif
#ifdef HAVE_SYS_PARAM_H
#include <sys/param.h> /* FreeBSD needs this to know what version it is */
#endif
#ifdef HAVE_SYS_UN_H
#include <sys/un.h>
#endif
#ifdef HAVE_IFADDRS_H
#include <ifaddrs.h>
#endif
#ifdef HAVE_SYS_IOCTL_H
#include <sys/ioctl.h>
#endif
#ifdef HAVE_NET_IF_H
#include <net/if.h>
#endif
#include <stdarg.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#include "test/fuzz/fuzzing.h"

int fuzz_init(void){
 return 0;
}

int fuzz_cleanup(void){
 return 0;
}

int fuzz_main(const uint8_t *data, size_t sz){

 tor_addr_t addr;
 char *fuzzing_data = tor_memdup_nulterm(data, sz);
 tor_addr_parse(&addr, fuzzing_data);
 tor_free(fuzzing_data);
 return 0;
}
+73 −0
Original line number Original line Diff line number Diff line
#include "lib/net/address.h"
#include "lib/net/socket.h"
#include "lib/cc/ctassert.h"
#include "lib/container/smartlist.h"
#include "lib/ctime/di_ops.h"
#include "lib/log/log.h"
#include "lib/log/escape.h"
#include "lib/malloc/malloc.h"
#include "lib/net/inaddr.h"
#include "lib/string/compat_ctype.h"
#include "lib/string/compat_string.h"
#include "lib/string/parse_int.h"
#include "lib/string/printf.h"
#include "lib/string/util_string.h"

#include "ext/siphash.h"

#ifdef HAVE_SYS_TIME_H
#include <sys/time.h>
#endif
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#endif
#ifdef HAVE_ERRNO_H
#include <errno.h>
#endif
#ifdef HAVE_ARPA_INET_H
#include <arpa/inet.h>
#endif
#ifdef HAVE_SYS_SOCKET_H
#include <sys/socket.h>
#endif
#ifdef HAVE_NETDB_H
#include <netdb.h>
#endif
#ifdef HAVE_SYS_PARAM_H
#include <sys/param.h> /* FreeBSD needs this to know what version it is */
#endif
#ifdef HAVE_SYS_UN_H
#include <sys/un.h>
#endif
#ifdef HAVE_IFADDRS_H
#include <ifaddrs.h>
#endif
#ifdef HAVE_SYS_IOCTL_H
#include <sys/ioctl.h>
#endif
#ifdef HAVE_NET_IF_H
#include <net/if.h>
#endif
#include <stdarg.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#include "test/fuzz/fuzzing.h"

int fuzz_init(void){
 return 0;
}

int fuzz_cleanup(void){
 return 0;
}

int fuzz_main(const uint8_t *data, size_t sz){

 tor_addr_t addr_result;
 char *fuzzing_data = tor_memdup_nulterm(data, sz);
 tor_addr_parse_PTR_name(&addr_result, fuzzing_data, AF_UNSPEC, 1);
 tor_free(fuzzing_data);
 return 0;
}
+72 −0
Original line number Original line Diff line number Diff line
#include "core/or/or.h"

#include "app/config/config.h"
#include "core/mainloop/connection.h"
#include "core/mainloop/mainloop.h"
#include "core/or/circuitlist.h"
#include "core/or/circuituse.h"
#include "core/or/extendinfo.h"
#include "core/or/policies.h"
#include "feature/client/bridges.h"
#include "feature/control/control_events.h"
#include "feature/dirauth/authmode.h"
#include "feature/dirauth/process_descs.h"
#include "feature/dirauth/reachability.h"
#include "feature/dircache/dirserv.h"
#include "feature/dirclient/dirclient.h"
#include "feature/dirclient/dirclient_modes.h"
#include "feature/dirclient/dlstatus.h"
#include "feature/dircommon/directory.h"
#include "feature/nodelist/authcert.h"
#include "feature/nodelist/describe.h"
#include "feature/nodelist/dirlist.h"
#include "feature/nodelist/microdesc.h"
#include "feature/nodelist/networkstatus.h"
#include "feature/nodelist/node_select.h"
#include "feature/nodelist/nodelist.h"
#include "feature/nodelist/routerinfo.h"
#include "feature/nodelist/routerlist.h"
#include "feature/dirparse/routerparse.h"
#include "feature/nodelist/routerset.h"
#include "feature/nodelist/torcert.h"
#include "feature/relay/routermode.h"
#include "feature/relay/relay_find_addr.h"
#include "feature/stats/rephist.h"
#include "lib/crypt_ops/crypto_format.h"
#include "lib/crypt_ops/crypto_rand.h"

#include "feature/dircommon/dir_connection_st.h"
#include "feature/dirclient/dir_server_st.h"
#include "feature/nodelist/document_signature_st.h"
#include "feature/nodelist/extrainfo_st.h"
#include "feature/nodelist/networkstatus_st.h"
#include "feature/nodelist/networkstatus_voter_info_st.h"
#include "feature/nodelist/node_st.h"
#include "feature/nodelist/routerinfo_st.h"
#include "feature/nodelist/routerlist_st.h"
#include "feature/nodelist/vote_routerstatus_st.h"

#include "lib/crypt_ops/digestset.h"

#include "test/fuzz/fuzzing.h"


int fuzz_init(void)
{
 return 0;
}

int fuzz_cleanup(void)
{
 return 0;
}

int fuzz_main(const uint8_t *data, size_t sz)
{
	char *fuzzing_data = tor_memdup_nulterm(data, sz);
	char digest[20];

	hexdigest_to_digest(fuzzing_data, digest);
	tor_free(fuzzing_data);
	return 0;
}
+87 −0
Original line number Original line Diff line number Diff line
@@ -32,6 +32,26 @@ LIBOSS_FUZZ_CPPFLAGS = $(FUZZING_CPPFLAGS) -DLLVM_FUZZ
LIBOSS_FUZZ_CFLAGS = $(FUZZING_CFLAGS)
LIBOSS_FUZZ_CFLAGS = $(FUZZING_CFLAGS)


# ===== AFL fuzzers
# ===== AFL fuzzers
if UNITTESTS_ENABLED
src_test_fuzz_fuzz_address_SOURCES = \
	src/test/fuzz/fuzzing_common.c \
	src/test/fuzz/fuzz_address.c
src_test_fuzz_fuzz_address_CPPFLAGS = $(FUZZING_CPPFLAGS)
src_test_fuzz_fuzz_address_CFLAGS = $(FUZZING_CFLAGS)
src_test_fuzz_fuzz_address_LDFLAGS = $(FUZZING_LDFLAG)
src_test_fuzz_fuzz_address_LDADD = $(FUZZING_LIBS)
endif

if UNITTESTS_ENABLED
src_test_fuzz_fuzz_addressPTR_SOURCES = \
	src/test/fuzz/fuzzing_common.c \
	src/test/fuzz/fuzz_addressPTR.c
src_test_fuzz_fuzz_addressPTR_CPPFLAGS = $(FUZZING_CPPFLAGS)
src_test_fuzz_fuzz_addressPTR_CFLAGS = $(FUZZING_CFLAGS)
src_test_fuzz_fuzz_addressPTR_LDFLAGS = $(FUZZING_LDFLAG)
src_test_fuzz_fuzz_addressPTR_LDADD = $(FUZZING_LIBS)
endif

if UNITTESTS_ENABLED
if UNITTESTS_ENABLED
src_test_fuzz_fuzz_consensus_SOURCES = \
src_test_fuzz_fuzz_consensus_SOURCES = \
	src/test/fuzz/fuzzing_common.c \
	src/test/fuzz/fuzzing_common.c \
@@ -82,6 +102,16 @@ src_test_fuzz_fuzz_extrainfo_LDFLAGS = $(FUZZING_LDFLAG)
src_test_fuzz_fuzz_extrainfo_LDADD = $(FUZZING_LIBS)
src_test_fuzz_fuzz_extrainfo_LDADD = $(FUZZING_LIBS)
endif
endif


if UNITTESTS_ENABLED
src_test_fuzz_fuzz_hexdigest_SOURCES = \
	src/test/fuzz/fuzzing_common.c \
	src/test/fuzz/fuzz_hexdigest.c
src_test_fuzz_fuzz_hexdigest_CPPFLAGS = $(FUZZING_CPPFLAGS)
src_test_fuzz_fuzz_hexdigest_CFLAGS = $(FUZZING_CFLAGS)
src_test_fuzz_fuzz_hexdigest_LDFLAGS = $(FUZZING_LDFLAG)
src_test_fuzz_fuzz_hexdigest_LDADD = $(FUZZING_LIBS)
endif

if UNITTESTS_ENABLED
if UNITTESTS_ENABLED
src_test_fuzz_fuzz_hsdescv3_SOURCES = \
src_test_fuzz_fuzz_hsdescv3_SOURCES = \
	src/test/fuzz/fuzzing_common.c \
	src/test/fuzz/fuzzing_common.c \
@@ -154,11 +184,14 @@ endif


if UNITTESTS_ENABLED
if UNITTESTS_ENABLED
FUZZERS = \
FUZZERS = \
	src/test/fuzz/fuzz-address \
	src/test/fuzz/fuzz-addressPTR \
	src/test/fuzz/fuzz-consensus \
	src/test/fuzz/fuzz-consensus \
	src/test/fuzz/fuzz-descriptor \
	src/test/fuzz/fuzz-descriptor \
	src/test/fuzz/fuzz-diff \
	src/test/fuzz/fuzz-diff \
	src/test/fuzz/fuzz-diff-apply \
	src/test/fuzz/fuzz-diff-apply \
	src/test/fuzz/fuzz-extrainfo \
	src/test/fuzz/fuzz-extrainfo \
	src/test/fuzz/fuzz-hexdigest \
	src/test/fuzz/fuzz-hsdescv3 \
	src/test/fuzz/fuzz-hsdescv3 \
	src/test/fuzz/fuzz-http \
	src/test/fuzz/fuzz-http \
	src/test/fuzz/fuzz-http-connect \
	src/test/fuzz/fuzz-http-connect \
@@ -171,6 +204,24 @@ endif
# ===== libfuzzer
# ===== libfuzzer


if LIBFUZZER_ENABLED
if LIBFUZZER_ENABLED
if UNITTESTS_ENABLED
src_test_fuzz_lf_fuzz_address_SOURCES = \
	$(src_test_fuzz_fuzz_address_SOURCES)
src_test_fuzz_lf_fuzz_address_CPPFLAGS = $(LIBFUZZER_CPPFLAGS)
src_test_fuzz_lf_fuzz_address_CFLAGS = $(LIBFUZZER_CFLAGS)
src_test_fuzz_lf_fuzz_address_LDFLAGS = $(LIBFUZZER_LDFLAG)
src_test_fuzz_lf_fuzz_address_LDADD = $(LIBFUZZER_LIBS)
endif

if UNITTESTS_ENABLED
src_test_fuzz_lf_fuzz_addressPTR_SOURCES = \
	$(src_test_fuzz_fuzz_addressPTR_SOURCES)
src_test_fuzz_lf_fuzz_addressPTR_CPPFLAGS = $(LIBFUZZER_CPPFLAGS)
src_test_fuzz_lf_fuzz_addressPTR_CFLAGS = $(LIBFUZZER_CFLAGS)
src_test_fuzz_lf_fuzz_addressPTR_LDFLAGS = $(LIBFUZZER_LDFLAG)
src_test_fuzz_lf_fuzz_addressPTR_LDADD = $(LIBFUZZER_LIBS)
endif

if UNITTESTS_ENABLED
if UNITTESTS_ENABLED
src_test_fuzz_lf_fuzz_consensus_SOURCES = \
src_test_fuzz_lf_fuzz_consensus_SOURCES = \
	$(src_test_fuzz_fuzz_consensus_SOURCES)
	$(src_test_fuzz_fuzz_consensus_SOURCES)
@@ -216,6 +267,15 @@ src_test_fuzz_lf_fuzz_extrainfo_LDFLAGS = $(LIBFUZZER_LDFLAG)
src_test_fuzz_lf_fuzz_extrainfo_LDADD = $(LIBFUZZER_LIBS)
src_test_fuzz_lf_fuzz_extrainfo_LDADD = $(LIBFUZZER_LIBS)
endif
endif


if UNITTESTS_ENABLED
src_test_fuzz_lf_fuzz_hexdigest_SOURCES = \
	$(src_test_fuzz_fuzz_hexdigest_SOURCES)
src_test_fuzz_lf_fuzz_hexdigest_CPPFLAGS = $(LIBFUZZER_CPPFLAGS)
src_test_fuzz_lf_fuzz_hexdigest_CFLAGS = $(LIBFUZZER_CFLAGS)
src_test_fuzz_lf_fuzz_hexdigest_LDFLAGS = $(LIBFUZZER_LDFLAG)
src_test_fuzz_lf_fuzz_hexdigest_LDADD = $(LIBFUZZER_LIBS)
endif

if UNITTESTS_ENABLED
if UNITTESTS_ENABLED
src_test_fuzz_lf_fuzz_hsdescv3_SOURCES = \
src_test_fuzz_lf_fuzz_hsdescv3_SOURCES = \
	$(src_test_fuzz_fuzz_hsdescv3_SOURCES)
	$(src_test_fuzz_fuzz_hsdescv3_SOURCES)
@@ -280,11 +340,14 @@ src_test_fuzz_lf_fuzz_vrs_LDADD = $(LIBFUZZER_LIBS)
endif
endif


LIBFUZZER_FUZZERS = \
LIBFUZZER_FUZZERS = \
	src/test/fuzz/lf-fuzz-address \
	src/test/fuzz/lf-fuzz-addressPTR \
	src/test/fuzz/lf-fuzz-consensus \
	src/test/fuzz/lf-fuzz-consensus \
	src/test/fuzz/lf-fuzz-descriptor \
	src/test/fuzz/lf-fuzz-descriptor \
	src/test/fuzz/lf-fuzz-diff \
	src/test/fuzz/lf-fuzz-diff \
	src/test/fuzz/lf-fuzz-diff-apply \
	src/test/fuzz/lf-fuzz-diff-apply \
	src/test/fuzz/lf-fuzz-extrainfo \
	src/test/fuzz/lf-fuzz-extrainfo \
	src/test/fuzz/lf-fuzz-hexdigest \
	src/test/fuzz/lf-fuzz-hsdescv3 \
	src/test/fuzz/lf-fuzz-hsdescv3 \
	src/test/fuzz/lf-fuzz-http \
	src/test/fuzz/lf-fuzz-http \
	src/test/fuzz/lf-fuzz-http-connect \
	src/test/fuzz/lf-fuzz-http-connect \
@@ -300,6 +363,20 @@ endif
# ===== oss-fuzz
# ===== oss-fuzz


if OSS_FUZZ_ENABLED
if OSS_FUZZ_ENABLED
if UNITTESTS_ENABLED
src_test_fuzz_liboss_fuzz_address_a_SOURCES = \
	$(src_test_fuzz_fuzz_address_SOURCES)
src_test_fuzz_liboss_fuzz_address_a_CPPFLAGS = $(LIBOSS_FUZZ_CPPFLAGS)
src_test_fuzz_liboss_fuzz_address_a_CFLAGS = $(LIBOSS_FUZZ_CFLAGS)
endif

if UNITTESTS_ENABLED
src_test_fuzz_liboss_fuzz_addressPTR_a_SOURCES = \
	$(src_test_fuzz_fuzz_addressPTR_SOURCES)
src_test_fuzz_liboss_fuzz_addressPTR_a_CPPFLAGS = $(LIBOSS_FUZZ_CPPFLAGS)
src_test_fuzz_liboss_fuzz_addressPTR_a_CFLAGS = $(LIBOSS_FUZZ_CFLAGS)
endif

if UNITTESTS_ENABLED
if UNITTESTS_ENABLED
src_test_fuzz_liboss_fuzz_consensus_a_SOURCES = \
src_test_fuzz_liboss_fuzz_consensus_a_SOURCES = \
	$(src_test_fuzz_fuzz_consensus_SOURCES)
	$(src_test_fuzz_fuzz_consensus_SOURCES)
@@ -335,6 +412,13 @@ src_test_fuzz_liboss_fuzz_extrainfo_a_CPPFLAGS = $(LIBOSS_FUZZ_CPPFLAGS)
src_test_fuzz_liboss_fuzz_extrainfo_a_CFLAGS = $(LIBOSS_FUZZ_CFLAGS)
src_test_fuzz_liboss_fuzz_extrainfo_a_CFLAGS = $(LIBOSS_FUZZ_CFLAGS)
endif
endif


if UNITTESTS_ENABLED
src_test_fuzz_liboss_fuzz_hexdigest_a_SOURCES = \
	$(src_test_fuzz_fuzz_hexdigest_SOURCES)
src_test_fuzz_liboss_fuzz_hexdigest_a_CPPFLAGS = $(LIBOSS_FUZZ_CPPFLAGS)
src_test_fuzz_liboss_fuzz_hexdigest_a_CFLAGS = $(LIBOSS_FUZZ_CFLAGS)
endif

if UNITTESTS_ENABLED
if UNITTESTS_ENABLED
src_test_fuzz_liboss_fuzz_hsdescv3_a_SOURCES = \
src_test_fuzz_liboss_fuzz_hsdescv3_a_SOURCES = \
	$(src_test_fuzz_fuzz_hsdescv3_SOURCES)
	$(src_test_fuzz_fuzz_hsdescv3_SOURCES)
@@ -385,11 +469,14 @@ src_test_fuzz_liboss_fuzz_vrs_a_CFLAGS = $(LIBOSS_FUZZ_CFLAGS)
endif
endif


OSS_FUZZ_FUZZERS = \
OSS_FUZZ_FUZZERS = \
	src/test/fuzz/liboss-fuzz-address.a \
	src/test/fuzz/liboss-fuzz-addressPTR.a \
	src/test/fuzz/liboss-fuzz-consensus.a \
	src/test/fuzz/liboss-fuzz-consensus.a \
	src/test/fuzz/liboss-fuzz-descriptor.a \
	src/test/fuzz/liboss-fuzz-descriptor.a \
	src/test/fuzz/liboss-fuzz-diff.a \
	src/test/fuzz/liboss-fuzz-diff.a \
	src/test/fuzz/liboss-fuzz-diff-apply.a \
	src/test/fuzz/liboss-fuzz-diff-apply.a \
	src/test/fuzz/liboss-fuzz-extrainfo.a \
	src/test/fuzz/liboss-fuzz-extrainfo.a \
	src/test/fuzz/liboss-fuzz-hexdigest.a \
	src/test/fuzz/liboss-fuzz-hsdescv3.a \
	src/test/fuzz/liboss-fuzz-hsdescv3.a \
	src/test/fuzz/liboss-fuzz-http.a \
	src/test/fuzz/liboss-fuzz-http.a \
	src/test/fuzz/liboss-fuzz-http-connect.a \
	src/test/fuzz/liboss-fuzz-http-connect.a \