From c2779328bf65cfb9c2d4dda02aafc93cd64f9014 Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Thu, 30 Sep 2021 18:56:17 +0200 Subject: [PATCH] Make MBEDTLS_IGNORE_RETURN configurable Signed-off-by: Gilles Peskine --- include/mbedtls/config.h | 8 ++++++++ include/mbedtls/platform_util.h | 10 ++++++++-- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/include/mbedtls/config.h b/include/mbedtls/config.h index dadd8a30c..a5366123e 100644 --- a/include/mbedtls/config.h +++ b/include/mbedtls/config.h @@ -3733,6 +3733,14 @@ */ //#define MBEDTLS_CHECK_RETURN __attribute__((__warn_unused_result__)) +/** \def MBEDTLS_IGNORE_RETURN + * + * This macro requires one argument, which should be a C function call. + * If that function call would cause a #MBEDTLS_CHECK_RETURN warning, this + * warning is suppressed. + */ +//#define MBEDTLS_IGNORE_RETURN( result ) ((void) !(result)) + /* PSA options */ /** * Use HMAC_DRBG with the specified hash algorithm for HMAC_DRBG for the diff --git a/include/mbedtls/platform_util.h b/include/mbedtls/platform_util.h index 7e8046a47..e08644d38 100644 --- a/include/mbedtls/platform_util.h +++ b/include/mbedtls/platform_util.h @@ -176,6 +176,9 @@ MBEDTLS_DEPRECATED typedef int mbedtls_deprecated_numeric_constant_t; * #MBEDTLS_CHECK_RETURN is implemented for the compiler in use and * #MBEDTLS_CHECK_RETURN_WARNING is enabled in the compile-time configuration. * + * You can use #MBEDTLS_IGNORE_RETURN to explicitly ignore the return value + * of a function that is annotated with #MBEDTLS_CHECK_RETURN. + * * \note The use of this macro is a work in progress. * This macro will be added to more functions in the future. * Eventually this should appear before most functions returning @@ -203,8 +206,10 @@ MBEDTLS_DEPRECATED typedef int mbedtls_deprecated_numeric_constant_t; /** \def MBEDTLS_IGNORE_RETURN * - * Silences warning about unused return value given by functions - * with \c MBEDTLS_CHECK_RETURN attribute. + * Call this macro with one argument, a function call, to suppress a warning + * from #MBEDTLS_CHECK_RETURN due to that function call. + */ +#if !defined(MBEDTLS_IGNORE_RETURN) /* GCC doesn't silence the warning with just (void)(result). * !(void)(result) is known to work up at least up to GCC 10, as well * as with Clang and MSVC. @@ -214,6 +219,7 @@ MBEDTLS_DEPRECATED typedef int mbedtls_deprecated_numeric_constant_t; * https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66425#c34 */ #define MBEDTLS_IGNORE_RETURN(result) ( (void) !( result ) ) +#endif /** * \brief Securely zeroize a buffer