mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-23 20:03:31 +01:00
Merge remote-tracking branch 'tor-gitlab/mr/407'
This commit is contained in:
commit
45bb6ae60b
@ -6,6 +6,9 @@ from __future__ import print_function
|
||||
from __future__ import unicode_literals
|
||||
|
||||
FUZZERS = """
|
||||
hexdigest
|
||||
address
|
||||
addressPTR
|
||||
consensus
|
||||
descriptor
|
||||
diff
|
||||
|
73
src/test/fuzz/fuzz_address.c
Normal file
73
src/test/fuzz/fuzz_address.c
Normal 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;
|
||||
}
|
73
src/test/fuzz/fuzz_addressPTR.c
Normal file
73
src/test/fuzz/fuzz_addressPTR.c
Normal 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;
|
||||
}
|
72
src/test/fuzz/fuzz_hexdigest.c
Normal file
72
src/test/fuzz/fuzz_hexdigest.c
Normal 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;
|
||||
}
|
@ -32,6 +32,26 @@ LIBOSS_FUZZ_CPPFLAGS = $(FUZZING_CPPFLAGS) -DLLVM_FUZZ
|
||||
LIBOSS_FUZZ_CFLAGS = $(FUZZING_CFLAGS)
|
||||
|
||||
# ===== 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
|
||||
src_test_fuzz_fuzz_consensus_SOURCES = \
|
||||
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)
|
||||
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
|
||||
src_test_fuzz_fuzz_hsdescv3_SOURCES = \
|
||||
src/test/fuzz/fuzzing_common.c \
|
||||
@ -154,11 +184,14 @@ endif
|
||||
|
||||
if UNITTESTS_ENABLED
|
||||
FUZZERS = \
|
||||
src/test/fuzz/fuzz-address \
|
||||
src/test/fuzz/fuzz-addressPTR \
|
||||
src/test/fuzz/fuzz-consensus \
|
||||
src/test/fuzz/fuzz-descriptor \
|
||||
src/test/fuzz/fuzz-diff \
|
||||
src/test/fuzz/fuzz-diff-apply \
|
||||
src/test/fuzz/fuzz-extrainfo \
|
||||
src/test/fuzz/fuzz-hexdigest \
|
||||
src/test/fuzz/fuzz-hsdescv3 \
|
||||
src/test/fuzz/fuzz-http \
|
||||
src/test/fuzz/fuzz-http-connect \
|
||||
@ -171,6 +204,24 @@ endif
|
||||
# ===== libfuzzer
|
||||
|
||||
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
|
||||
src_test_fuzz_lf_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)
|
||||
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
|
||||
src_test_fuzz_lf_fuzz_hsdescv3_SOURCES = \
|
||||
$(src_test_fuzz_fuzz_hsdescv3_SOURCES)
|
||||
@ -280,11 +340,14 @@ src_test_fuzz_lf_fuzz_vrs_LDADD = $(LIBFUZZER_LIBS)
|
||||
endif
|
||||
|
||||
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-descriptor \
|
||||
src/test/fuzz/lf-fuzz-diff \
|
||||
src/test/fuzz/lf-fuzz-diff-apply \
|
||||
src/test/fuzz/lf-fuzz-extrainfo \
|
||||
src/test/fuzz/lf-fuzz-hexdigest \
|
||||
src/test/fuzz/lf-fuzz-hsdescv3 \
|
||||
src/test/fuzz/lf-fuzz-http \
|
||||
src/test/fuzz/lf-fuzz-http-connect \
|
||||
@ -300,6 +363,20 @@ endif
|
||||
# ===== oss-fuzz
|
||||
|
||||
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
|
||||
src_test_fuzz_liboss_fuzz_consensus_a_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)
|
||||
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
|
||||
src_test_fuzz_liboss_fuzz_hsdescv3_a_SOURCES = \
|
||||
$(src_test_fuzz_fuzz_hsdescv3_SOURCES)
|
||||
@ -385,11 +469,14 @@ src_test_fuzz_liboss_fuzz_vrs_a_CFLAGS = $(LIBOSS_FUZZ_CFLAGS)
|
||||
endif
|
||||
|
||||
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-descriptor.a \
|
||||
src/test/fuzz/liboss-fuzz-diff.a \
|
||||
src/test/fuzz/liboss-fuzz-diff-apply.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-http.a \
|
||||
src/test/fuzz/liboss-fuzz-http-connect.a \
|
||||
|
Loading…
Reference in New Issue
Block a user