From 2e5258fe15480761301eaa004c3297f147f271cc Mon Sep 17 00:00:00 2001 From: Jacob Barthelmeh Date: Wed, 11 Dec 2019 11:19:58 -0700 Subject: [PATCH] add --disable-errorqueue option --- configure.ac | 13 +++++++++++++ src/ssl.c | 6 ++++-- tests/api.c | 8 +++++--- wolfcrypt/src/logging.c | 17 ++++++++++++----- wolfssl/wolfcrypt/logging.h | 3 ++- 5 files changed, 36 insertions(+), 11 deletions(-) diff --git a/configure.ac b/configure.ac index 9de62ae66..cfc02b323 100644 --- a/configure.ac +++ b/configure.ac @@ -1692,6 +1692,19 @@ else fi +# ERROR QUEUE +AC_ARG_ENABLE([errorqueue], + [AS_HELP_STRING([--disable-errorqueue],[Disables adding nodes to error queue when compiled with OPENSSL_EXTRA (default: enabled)])], + [ ENABLED_ERROR_QUEUE=$enableval ], + [ ENABLED_ERROR_QUEUE=yes ] + ) + +if test "$ENABLED_ERROR_QUEUE" = "no" +then + AM_CFLAGS="$AM_CFLAGS -DNO_ERROR_QUEUE" +fi + + # OLD TLS AC_ARG_ENABLE([oldtls], [AS_HELP_STRING([--enable-oldtls],[Enable old TLS versions < 1.2 (default: enabled)])], diff --git a/src/ssl.c b/src/ssl.c index 039aac212..d5986789b 100644 --- a/src/ssl.c +++ b/src/ssl.c @@ -17876,7 +17876,8 @@ int wolfSSL_EVP_MD_type(const WOLFSSL_EVP_MD *md) } -#if defined(DEBUG_WOLFSSL) || defined(OPENSSL_EXTRA) +#if (defined(DEBUG_WOLFSSL) || defined(OPENSSL_EXTRA)) && \ + (!defined(_WIN32) && !defined(NO_ERROR_QUEUE)) static const char WOLFSSL_SYS_ACCEPT_T[] = "accept"; static const char WOLFSSL_SYS_BIND_T[] = "bind"; static const char WOLFSSL_SYS_CONNECT_T[] = "connect"; @@ -17933,7 +17934,8 @@ int wolfSSL_EVP_MD_type(const WOLFSSL_EVP_MD *md) (void)file; (void)line; WOLFSSL_MSG("Not compiled in debug mode"); - #elif defined(OPENSSL_EXTRA) && defined(_WIN32) + #elif defined(OPENSSL_EXTRA) && \ + (defined(_WIN32) || defined(NO_ERROR_QUEUE)) (void)fun; (void)file; (void)line; diff --git a/tests/api.c b/tests/api.c index 995f8ab8c..cb43fc67b 100644 --- a/tests/api.c +++ b/tests/api.c @@ -20247,7 +20247,7 @@ static void test_wolfSSL_ERR_peek_last_error_line(void) #if defined(OPENSSL_EXTRA) && !defined(NO_CERTS) && \ !defined(NO_FILESYSTEM) && defined(DEBUG_WOLFSSL) && \ !defined(NO_OLD_TLS) && !defined(WOLFSSL_NO_TLS12) && \ - defined(HAVE_IO_TESTS_DEPENDENCIES) + defined(HAVE_IO_TESTS_DEPENDENCIES) && !defined(NO_ERROR_QUEUE) tcp_ready ready; func_args client_args; func_args server_args; @@ -22552,7 +22552,8 @@ static void test_wolfSSL_PKCS8_d2i(void) static void test_wolfSSL_ERR_put_error(void) { - #if defined(OPENSSL_EXTRA) && defined(DEBUG_WOLFSSL) + #if !defined(NO_ERROR_QUEUE) && defined(OPENSSL_EXTRA) && \ + defined(DEBUG_WOLFSSL) const char* file; int line; @@ -22621,7 +22622,8 @@ static void test_wolfSSL_ERR_put_error(void) static void test_wolfSSL_ERR_print_errors(void) { - #if defined(OPENSSL_EXTRA) && defined(DEBUG_WOLFSSL) + #if !defined(NO_ERROR_QUEUE) && defined(OPENSSL_EXTRA) && \ + defined(DEBUG_WOLFSSL) BIO* bio; char buf[1024]; diff --git a/wolfcrypt/src/logging.c b/wolfcrypt/src/logging.c index ec910f6ec..df0a5fabc 100644 --- a/wolfcrypt/src/logging.c +++ b/wolfcrypt/src/logging.c @@ -354,7 +354,8 @@ void WOLFSSL_LEAVE(const char* msg, int ret) defined(WOLFSSL_NGINX) || defined(WOLFSSL_HAPROXY) || \ defined(OPENSSL_EXTRA) -#if (defined(OPENSSL_EXTRA) && !defined(_WIN32)) || defined(DEBUG_WOLFSSL_VERBOSE) +#if (defined(OPENSSL_EXTRA) && !defined(_WIN32) && !defined(NO_ERROR_QUEUE)) \ + || defined(DEBUG_WOLFSSL_VERBOSE) void WOLFSSL_ERROR_LINE(int error, const char* func, unsigned int line, const char* file, void* usrCtx) #else @@ -367,7 +368,8 @@ void WOLFSSL_ERROR(int error) { char buffer[WOLFSSL_MAX_ERROR_SZ]; - #if (defined(OPENSSL_EXTRA) && !defined(_WIN32)) || defined(DEBUG_WOLFSSL_VERBOSE) + #if (defined(OPENSSL_EXTRA) && !defined(_WIN32) && \ + !defined(NO_ERROR_QUEUE)) || defined(DEBUG_WOLFSSL_VERBOSE) (void)usrCtx; /* a user ctx for future flexibility */ (void)func; @@ -572,9 +574,14 @@ int wc_PullErrorNode(const char **file, const char **reason, int *line) * function. debug_mutex should be locked before a call to this function. */ int wc_AddErrorNode(int error, int line, char* buf, char* file) { - +#if defined(NO_ERROR_QUEUE) + (void)error; + (void)line; + (void)buf; + (void)file; + WOLFSSL_MSG("Error queue turned off, can not add nodes"); +#else struct wc_error_queue* err; - err = (struct wc_error_queue*)XMALLOC( sizeof(struct wc_error_queue), wc_error_heap, DYNAMIC_TYPE_LOG); if (err == NULL) { @@ -640,7 +647,7 @@ int wc_AddErrorNode(int error, int line, char* buf, char* file) } } } - +#endif return 0; } diff --git a/wolfssl/wolfcrypt/logging.h b/wolfssl/wolfcrypt/logging.h index e776f2b43..25ae99825 100644 --- a/wolfssl/wolfcrypt/logging.h +++ b/wolfssl/wolfcrypt/logging.h @@ -166,7 +166,8 @@ WOLFSSL_API void wolfSSL_Debugging_OFF(void); #if defined(DEBUG_WOLFSSL) || defined(OPENSSL_ALL) || defined(WOLFSSL_NGINX) ||\ defined(WOLFSSL_HAPROXY) || defined(OPENSSL_EXTRA) - #if (defined(OPENSSL_EXTRA) && !defined(_WIN32)) || defined(DEBUG_WOLFSSL_VERBOSE) + #if (!defined(NO_ERROR_QUEUE) && defined(OPENSSL_EXTRA) && !defined(_WIN32))\ + || defined(DEBUG_WOLFSSL_VERBOSE) WOLFSSL_API void WOLFSSL_ERROR_LINE(int err, const char* func, unsigned int line, const char* file, void* ctx); #define WOLFSSL_ERROR(x) \