diff --git a/include/mbedtls/error.h b/include/mbedtls/error.h index d164e9f8f..cd7731e6b 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 000000000..9f901f006 --- /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 5845766ac..f4cef97b9 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 486afedfa..901a3699a 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 1fe25d89f..a26f1eeda 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 6a4758af9..b35b1437f 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 cb819a8bd..9cf432915 100644 --- a/visualc/VS2010/mbedTLS.vcxproj +++ b/visualc/VS2010/mbedTLS.vcxproj @@ -293,6 +293,7 @@ +