From 301db669542abbd585189dd907db014cd237a4cf Mon Sep 17 00:00:00 2001 From: Daniel Axtens Date: Thu, 28 May 2020 11:43:41 +1000 Subject: [PATCH] Do not include time.h without MBEDTLS_HAVE_TIME MBEDTLS_HAVE_TIME is documented as: "System has time.h and time()." If that is not defined, do not attempt to include time.h. A particular problem is platform-time.h, which should only be included if MBEDTLS_HAVE_TIME is defined, which makes everything messier. Maybe it should be refactored to have the check inside the header. Signed-off-by: Daniel Axtens --- include/mbedtls/platform.h | 2 ++ library/x509_crl.c | 2 ++ library/x509_crt.c | 2 ++ programs/fuzz/common.c | 4 +++- programs/fuzz/common.h | 11 +++++++++++ programs/test/query_config.c | 2 ++ scripts/data_files/query_config.fmt | 2 ++ 7 files changed, 24 insertions(+), 1 deletion(-) diff --git a/include/mbedtls/platform.h b/include/mbedtls/platform.h index 0bd633b68..06dd192ea 100644 --- a/include/mbedtls/platform.h +++ b/include/mbedtls/platform.h @@ -70,7 +70,9 @@ extern "C" { #if !defined(MBEDTLS_PLATFORM_NO_STD_FUNCTIONS) #include #include +#if defined(MBEDTLS_HAVE_TIME) #include +#endif #if !defined(MBEDTLS_PLATFORM_STD_SNPRINTF) #if defined(MBEDTLS_PLATFORM_HAS_NON_CONFORMING_SNPRINTF) #define MBEDTLS_PLATFORM_STD_SNPRINTF mbedtls_platform_win32_snprintf /**< The default \c snprintf function to use. */ diff --git a/library/x509_crl.c b/library/x509_crl.c index ac4fc75de..d2d804202 100644 --- a/library/x509_crl.c +++ b/library/x509_crl.c @@ -52,11 +52,13 @@ #define mbedtls_snprintf snprintf #endif +#if defined(MBEDTLS_HAVE_TIME) #if defined(_WIN32) && !defined(EFIX64) && !defined(EFI32) #include #else #include #endif +#endif #if defined(MBEDTLS_FS_IO) || defined(EFIX64) || defined(EFI32) #include diff --git a/library/x509_crt.c b/library/x509_crt.c index a6cccf814..911644b7d 100644 --- a/library/x509_crt.c +++ b/library/x509_crt.c @@ -63,11 +63,13 @@ #include "mbedtls/threading.h" #endif +#if defined(MBEDTLS_HAVE_TIME) #if defined(_WIN32) && !defined(EFIX64) && !defined(EFI32) #include #else #include #endif +#endif #if defined(MBEDTLS_FS_IO) #include diff --git a/programs/fuzz/common.c b/programs/fuzz/common.c index e12ee3b8a..15ddf0782 100644 --- a/programs/fuzz/common.c +++ b/programs/fuzz/common.c @@ -5,15 +5,17 @@ #include #include "mbedtls/ctr_drbg.h" +#if defined(MBEDTLS_HAVE_TIME) mbedtls_time_t dummy_constant_time( mbedtls_time_t* time ) { (void) time; return 0x5af2a056; } +#endif void dummy_init() { -#if defined(MBEDTLS_PLATFORM_TIME_ALT) +#if (defined(MBEDTLS_HAVE_TIME) && defined(MBEDTLS_PLATFORM_TIME_ALT)) mbedtls_platform_set_time( dummy_constant_time ); #else fprintf(stderr, "Warning: fuzzing without constant time\n"); diff --git a/programs/fuzz/common.h b/programs/fuzz/common.h index 5586c06ad..7757ee3f1 100644 --- a/programs/fuzz/common.h +++ b/programs/fuzz/common.h @@ -1,4 +1,13 @@ +#if !defined(MBEDTLS_CONFIG_FILE) +#include "mbedtls/config.h" +#else +#include MBEDTLS_CONFIG_FILE +#endif + +#if defined(MBEDTLS_HAVE_TIME) #include "mbedtls/platform_time.h" +#endif +#include #include typedef struct fuzzBufferOffset @@ -8,7 +17,9 @@ typedef struct fuzzBufferOffset size_t Offset; } fuzzBufferOffset_t; +#if defined(MBEDTLS_HAVE_TIME) mbedtls_time_t dummy_constant_time( mbedtls_time_t* time ); +#endif void dummy_init(); int dummy_send( void *ctx, const unsigned char *buf, size_t len ); diff --git a/programs/test/query_config.c b/programs/test/query_config.c index 88db08e15..10b01dd6c 100644 --- a/programs/test/query_config.c +++ b/programs/test/query_config.c @@ -81,7 +81,9 @@ #include "mbedtls/pkcs11.h" #include "mbedtls/pkcs12.h" #include "mbedtls/pkcs5.h" +#if defined(MBEDTLS_HAVE_TIME) #include "mbedtls/platform_time.h" +#endif #include "mbedtls/platform_util.h" #include "mbedtls/poly1305.h" #include "mbedtls/ripemd160.h" diff --git a/scripts/data_files/query_config.fmt b/scripts/data_files/query_config.fmt index cf22635b7..04c546614 100644 --- a/scripts/data_files/query_config.fmt +++ b/scripts/data_files/query_config.fmt @@ -81,7 +81,9 @@ #include "mbedtls/pkcs11.h" #include "mbedtls/pkcs12.h" #include "mbedtls/pkcs5.h" +#if defined(MBEDTLS_HAVE_TIME) #include "mbedtls/platform_time.h" +#endif #include "mbedtls/platform_util.h" #include "mbedtls/poly1305.h" #include "mbedtls/ripemd160.h"