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

This commit is contained in:
Nick Mathewson 2021-07-12 15:41:12 -04:00
commit 45bb6ae60b
5 changed files with 308 additions and 0 deletions

View File

@ -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

View File

@ -0,0 +1,73 @@
#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;
}

View File

@ -0,0 +1,73 @@
#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;
}

View File

@ -0,0 +1,72 @@
#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;
}

View File

@ -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 \