diff --git a/include/mbedtls/error.h b/include/mbedtls/error.h index cd7731e6b..d060d177b 100644 --- a/include/mbedtls/error.h +++ b/include/mbedtls/error.h @@ -114,6 +114,28 @@ 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 */ +/** 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). + * + * To set a hook use + * ``` + * mbedtls_set_err_add_hook(&mbedtls_check_foo); + * ``` + */ +#if defined(MBEDTLS_TEST_HOOKS) +void mbedtls_set_err_add_hook( void *hook ); +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 /* MBEDTLS_TEST_HOOKS */ + /** * \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/CMakeLists.txt b/library/CMakeLists.txt index e25fe57e5..220fbf92b 100644 --- a/library/CMakeLists.txt +++ b/library/CMakeLists.txt @@ -27,7 +27,6 @@ set(src_crypto cipher.c cipher_wrap.c cmac.c - common.c ctr_drbg.c des.c dhm.c diff --git a/library/Makefile b/library/Makefile index 66110166a..13b0b2934 100644 --- a/library/Makefile +++ b/library/Makefile @@ -84,7 +84,6 @@ OBJS_CRYPTO= \ cipher.o \ cipher_wrap.o \ cmac.o \ - common.o \ ctr_drbg.o \ des.o \ dhm.o \ diff --git a/library/common.c b/library/common.c deleted file mode 100644 index 4273600c4..000000000 --- a/library/common.c +++ /dev/null @@ -1,36 +0,0 @@ -/* - * 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. - */ - -#include "common.h" - -#include - -#if defined(MBEDTLS_TEST_HOOKS) -static void (*err_add_hook)( int, int, const char *, int ); -void mbedtls_set_err_add_hook(void *hook) -{ - err_add_hook = hook; -} -int mbedtls_err_add( int high, int low, const char *file, int line ) -{ - if( err_add_hook != NULL ) - (*err_add_hook)( high, low, file, line ); - return ( high + low ); -} -#endif diff --git a/library/common.h b/library/common.h index a9b6187b3..5845766ac 100644 --- a/library/common.h +++ b/library/common.h @@ -29,7 +29,6 @@ #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 @@ -45,31 +44,10 @@ * #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). - * - * To set a hook use - * ``` - * mbedtls_set_err_add_hook(&mbedtls_check_foo); - * ``` - */ -void mbedtls_set_err_add_hook( void *hook ); -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 - -#define MBEDTLS_ERR_ADD( high, low ) \ - ( high + low ) - -#endif /* MBEDTLS_TEST_HOOKS */ +#endif #endif /* MBEDTLS_LIBRARY_COMMON_H */ diff --git a/library/error.c b/library/error.c index 901a3699a..4e279b069 100644 --- a/library/error.c +++ b/library/error.c @@ -893,6 +893,22 @@ const char * mbedtls_low_level_strerr( int error_code ) return( NULL ); } +#if defined(MBEDTLS_TEST_HOOKS) +static void (*err_add_hook)( int, int, const char *, int ); + +void mbedtls_set_err_add_hook(void *hook) +{ + err_add_hook = hook; +} + +int mbedtls_err_add( int high, int low, const char *file, int line ) +{ + if( err_add_hook != NULL ) + (*err_add_hook)( high, low, file, line ); + return ( high + low ); +} +#endif /* MBEDTLS_TEST_HOOKS */ + void mbedtls_strerror( int ret, char *buf, size_t buflen ) { size_t len; diff --git a/scripts/data_files/error.fmt b/scripts/data_files/error.fmt index 9e479bbfd..fdb3ce291 100644 --- a/scripts/data_files/error.fmt +++ b/scripts/data_files/error.fmt @@ -82,6 +82,22 @@ LOW_LEVEL_CODE_CHECKS return( NULL ); } +#if defined(MBEDTLS_TEST_HOOKS) +static void (*err_add_hook)( int, int, const char *, int ); + +void mbedtls_set_err_add_hook(void *hook) +{ + err_add_hook = hook; +} + +int mbedtls_err_add( int high, int low, const char *file, int line ) +{ + if( err_add_hook != NULL ) + (*err_add_hook)( high, low, file, line ); + return ( high + low ); +} +#endif /* MBEDTLS_TEST_HOOKS */ + void mbedtls_strerror( int ret, char *buf, size_t buflen ) { size_t len; diff --git a/tests/suites/main_test.function b/tests/suites/main_test.function index 09927fe7b..76e1057d1 100644 --- a/tests/suites/main_test.function +++ b/tests/suites/main_test.function @@ -34,7 +34,7 @@ #endif /* MBEDTLS_USE_PSA_CRYPTO */ #if defined(MBEDTLS_TEST_HOOKS) -#include "common.h" +#include "mbedtls/error.h" #endif /* Test code may use deprecated identifiers only if the preprocessor symbol diff --git a/visualc/VS2010/mbedTLS.vcxproj b/visualc/VS2010/mbedTLS.vcxproj index 9cf432915..cb819a8bd 100644 --- a/visualc/VS2010/mbedTLS.vcxproj +++ b/visualc/VS2010/mbedTLS.vcxproj @@ -293,7 +293,6 @@ -