From 5e8805afeb3e14756f9364b3af2033c97047aab3 Mon Sep 17 00:00:00 2001 From: Chris Jones Date: Tue, 12 Jan 2021 15:21:57 +0000 Subject: [PATCH] Move `MBEDTLS_ERR_ADD` macro and function to `common.*` `error.c` is a file generated from `error.h` and thus cannot contain the code that was previously added. This commit fixes that issue by moving the `MBEDTLS_ERR_ADD` macro and associated function and function pointer into `common.h` and `common.c`. Also fix a typo in `tests/include/test/helpers.h` where tabs were accidentally used instead of spaces. Signed-off-by: Chris Jones --- include/mbedtls/error.h | 10 ---------- library/common.c | 27 +++++++++++++++++++++++++++ library/common.h | 20 ++++++++++++++++++-- library/error.c | 7 ------- tests/include/test/helpers.h | 6 +++--- tests/suites/main_test.function | 4 ---- visualc/VS2010/mbedTLS.vcxproj | 1 + 7 files changed, 49 insertions(+), 26 deletions(-) create mode 100644 library/common.c diff --git a/include/mbedtls/error.h b/include/mbedtls/error.h index d164e9f8fd..cd7731e6be 100644 --- a/include/mbedtls/error.h +++ b/include/mbedtls/error.h @@ -114,16 +114,6 @@ extern "C" { #define MBEDTLS_ERR_ERROR_GENERIC_ERROR -0x0001 /**< Generic error */ #define MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED -0x006E /**< This is a bug in the library */ -#if defined(MBEDTLS_TEST_HOOKS) -void (*mbedtls_test_err_add_hook)( int, int, const char *, int ); -int mbedtls_err_add( int high, int low, const char *file, int line ); -#define MBEDTLS_ERR_ADD( high, low ) \ - ( mbedtls_err_add( high, low, __FILE__, __LINE__ ) ) -#else -#define MBEDTLS_ERR_ADD( high, low ) \ - ( high + low ) -#endif - /** * \brief Translate a mbed TLS error code into a string representation, * Result is truncated if necessary and always includes a terminating diff --git a/library/common.c b/library/common.c new file mode 100644 index 0000000000..9f901f006a --- /dev/null +++ b/library/common.c @@ -0,0 +1,27 @@ +/* + * Internal invasive testing helper functions + * + * Copyright The Mbed TLS Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined(MBEDTLS_TEST_HOOKS) +void (*mbedtls_test_err_add_hook)( int, int, const char *, int ); +int mbedtls_err_add( int high, int low, const char *file, int line ) { + if( mbedtls_test_err_add_hook != NULL ) + (*mbedtls_test_err_add_hook)( high, low, file, line ); + return ( high + low ); +} +#endif diff --git a/library/common.h b/library/common.h index 5845766ac1..f4cef97b91 100644 --- a/library/common.h +++ b/library/common.h @@ -29,6 +29,7 @@ #include "mbedtls/config.h" #endif +#if defined(MBEDTLS_TEST_HOOKS) /** Helper to define a function as static except when building invasive tests. * * If a function is only used inside its own source file and should be @@ -44,10 +45,25 @@ * #endif * ``` */ -#if defined(MBEDTLS_TEST_HOOKS) #define MBEDTLS_STATIC_TESTABLE + +/** Helper macro and function to combine a high and low level error code. + * + * This function uses a hook (`mbedtls_test_err_add_hook`) to allow invasive + * testing of its inputs. This is used in the test infrastructure to report + * on errors when combining two error codes of the same level (e.g: two high + * or two low level errors). + */ +int mbedtls_err_add( int high, int low, const char *file, int line ); +#define MBEDTLS_ERR_ADD( high, low ) \ + ( mbedtls_err_add( high, low, __FILE__, __LINE__ ) ) + #else #define MBEDTLS_STATIC_TESTABLE static -#endif + +#define MBEDTLS_ERR_ADD( high, low ) \ + ( high + low ) + +#endif /* MBEDTLS_TEST_HOOKS */ #endif /* MBEDTLS_LIBRARY_COMMON_H */ diff --git a/library/error.c b/library/error.c index 486afedfa8..901a3699ae 100644 --- a/library/error.c +++ b/library/error.c @@ -210,13 +210,6 @@ #include "mbedtls/xtea.h" #endif -#if defined(MBEDTLS_TEST_HOOKS) -int mbedtls_err_add( int high, int low, const char *file, int line ) { - if( mbedtls_test_err_add_hook != NULL ) - (*mbedtls_test_err_add_hook)( high, low, file, line ); - return ( high + low ); -} -#endif const char * mbedtls_high_level_strerr( int error_code ) { diff --git a/tests/include/test/helpers.h b/tests/include/test/helpers.h index 1fe25d89fe..a26f1eeda9 100644 --- a/tests/include/test/helpers.h +++ b/tests/include/test/helpers.h @@ -280,9 +280,9 @@ void mbedtls_test_mutex_usage_check( void ); #if defined(MBEDTLS_TEST_HOOKS) /** - * \brief Check that a pure high-level error code is being combined with a - * pure low-level error code as otherwise the resultant error code - * would be corrupted. + * \brief Check that a pure high-level error code is being combined with a + * pure low-level error code as otherwise the resultant error code + * would be corrupted. */ void mbedtls_test_err_add_check( int high, int low, const char *file, int line); diff --git a/tests/suites/main_test.function b/tests/suites/main_test.function index 6a4758af9a..b35b1437f7 100644 --- a/tests/suites/main_test.function +++ b/tests/suites/main_test.function @@ -33,10 +33,6 @@ #include "psa/crypto.h" #endif /* MBEDTLS_USE_PSA_CRYPTO */ -#if defined(MBEDTLS_TEST_HOOKS) -#include "mbedtls/error.h" -#endif - /* Test code may use deprecated identifiers only if the preprocessor symbol * MBEDTLS_TEST_DEPRECATED is defined. When building tests, set * MBEDTLS_TEST_DEPRECATED explicitly if MBEDTLS_DEPRECATED_WARNING is diff --git a/visualc/VS2010/mbedTLS.vcxproj b/visualc/VS2010/mbedTLS.vcxproj index cb819a8bd0..9cf432915c 100644 --- a/visualc/VS2010/mbedTLS.vcxproj +++ b/visualc/VS2010/mbedTLS.vcxproj @@ -293,6 +293,7 @@ +