diff --git a/tests/fuzz/CMakeLists.txt b/tests/fuzz/CMakeLists.txt index 1392f63ca..4f37efa9f 100644 --- a/tests/fuzz/CMakeLists.txt +++ b/tests/fuzz/CMakeLists.txt @@ -25,14 +25,14 @@ target_link_libraries(fuzz_privkey ${libs}) add_executable(fuzz_pubkey fuzz_pubkey.c onefile.c) target_link_libraries(fuzz_pubkey ${libs}) -add_executable(fuzz_client fuzz_client.c onefile.c) +add_executable(fuzz_client fuzz_client.c common.c onefile.c) target_link_libraries(fuzz_client ${libs}) -add_executable(fuzz_server fuzz_server.c onefile.c) +add_executable(fuzz_server fuzz_server.c common.c onefile.c) target_link_libraries(fuzz_server ${libs}) -add_executable(fuzz_dtlsclient fuzz_dtlsclient.c onefile.c) +add_executable(fuzz_dtlsclient fuzz_dtlsclient.c common.c onefile.c) target_link_libraries(fuzz_dtlsclient ${libs}) -add_executable(fuzz_dtlsserver fuzz_dtlsserver.c onefile.c) +add_executable(fuzz_dtlsserver fuzz_dtlsserver.c common.c onefile.c) target_link_libraries(fuzz_dtlsserver ${libs}) diff --git a/tests/fuzz/common.c b/tests/fuzz/common.c new file mode 100644 index 000000000..450f74bba --- /dev/null +++ b/tests/fuzz/common.c @@ -0,0 +1,14 @@ +#include "common.h" + +mbedtls_time_t dummy_constant_time( mbedtls_time_t* time ) { + (void) time; + return 0x5af2a056; +} + +void dummy_init() { +#if defined(MBEDTLS_PLATFORM_TIME_ALT) + mbedtls_platform_set_time( dummy_constant_time ); +#else + fprintf(stderr, "Warning: fuzzing without constant time\n"); +#endif +} diff --git a/tests/fuzz/common.h b/tests/fuzz/common.h new file mode 100644 index 000000000..03dc2a4f4 --- /dev/null +++ b/tests/fuzz/common.h @@ -0,0 +1,4 @@ +#include "mbedtls/platform_time.h" + +mbedtls_time_t dummy_constant_time( mbedtls_time_t* time ); +void dummy_init(); diff --git a/tests/fuzz/fuzz_client.c b/tests/fuzz/fuzz_client.c index b9cdddd0e..783cd4843 100644 --- a/tests/fuzz/fuzz_client.c +++ b/tests/fuzz/fuzz_client.c @@ -2,6 +2,7 @@ #include "mbedtls/entropy.h" #include "mbedtls/ctr_drbg.h" #include "mbedtls/certs.h" +#include "common.h" #include #include #include @@ -90,7 +91,6 @@ static int dummy_entropy( void *data, unsigned char *output, size_t len ) return( 0 ); } - int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size) { int ret; size_t len; @@ -114,6 +114,8 @@ int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size) { alpn_list[1] = "fuzzalpn"; alpn_list[2] = NULL; + dummy_init(); + initialized = 1; } diff --git a/tests/fuzz/fuzz_dtlsclient.c b/tests/fuzz/fuzz_dtlsclient.c index 55cd43b21..4215313f1 100644 --- a/tests/fuzz/fuzz_dtlsclient.c +++ b/tests/fuzz/fuzz_dtlsclient.c @@ -2,6 +2,7 @@ #include #include #include +#include "common.h" #include "mbedtls/ssl.h" #if defined(MBEDTLS_SSL_PROTO_DTLS) #include "mbedtls/entropy.h" @@ -113,6 +114,8 @@ int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size) { mbedtls_test_cas_pem_len ) != 0) return 1; #endif + dummy_init(); + initialized = 1; } diff --git a/tests/fuzz/fuzz_dtlsserver.c b/tests/fuzz/fuzz_dtlsserver.c index d50b0adbe..e534b0eff 100644 --- a/tests/fuzz/fuzz_dtlsserver.c +++ b/tests/fuzz/fuzz_dtlsserver.c @@ -2,6 +2,7 @@ #include #include #include +#include "common.h" #include "mbedtls/ssl.h" #if defined(MBEDTLS_SSL_PROTO_DTLS) #include "mbedtls/entropy.h" @@ -120,6 +121,8 @@ int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size) { mbedtls_test_srv_key_len, NULL, 0 ) != 0) return 1; #endif + dummy_init(); + initialized = 1; } mbedtls_ssl_init( &ssl ); diff --git a/tests/fuzz/fuzz_server.c b/tests/fuzz/fuzz_server.c index 8d10c5969..0a96028f6 100644 --- a/tests/fuzz/fuzz_server.c +++ b/tests/fuzz/fuzz_server.c @@ -3,6 +3,7 @@ #include "mbedtls/ctr_drbg.h" #include "mbedtls/certs.h" #include "mbedtls/ssl_ticket.h" +#include "common.h" #include #include #include @@ -131,6 +132,8 @@ int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size) { alpn_list[1] = "fuzzalpn"; alpn_list[2] = NULL; + dummy_init(); + initialized = 1; } mbedtls_ssl_init( &ssl );