diff --git a/include/mbedtls/error.h b/include/mbedtls/error.h index 5ccebebde6..82b018813e 100644 --- a/include/mbedtls/error.h +++ b/include/mbedtls/error.h @@ -55,7 +55,7 @@ * Low-level module errors (0x0002-0x007E, 0x0001-0x007F) * * Module Nr Codes assigned - * ERROR 2 0x006E 0x0001 + * ERROR 2 0x006E 0x0001 * MPI 7 0x0002-0x0010 * GCM 3 0x0012-0x0014 0x0013-0x0013 * BLOWFISH 3 0x0016-0x0018 0x0017-0x0017 diff --git a/library/error.c b/library/error.c index 85beaeeacc..27305b56fc 100644 --- a/library/error.c +++ b/library/error.c @@ -25,8 +25,7 @@ #include MBEDTLS_CONFIG_FILE #endif -#if defined(MBEDTLS_ERROR_C) || defined(MBEDTLS_ERROR_STRERROR_DUMMY) -#include "mbedtls/error.h" +#if defined(MBEDTLS_ERROR_STRERROR_DUMMY) #include #endif diff --git a/programs/aes/aescrypt2.c b/programs/aes/aescrypt2.c index 8242ea7c9e..048028df09 100644 --- a/programs/aes/aescrypt2.c +++ b/programs/aes/aescrypt2.c @@ -96,7 +96,7 @@ int main( int argc, char *argv[] ) unsigned char IV[16]; unsigned char tmp[16]; unsigned char key[512]; - unsigned char digest[32]; + unsigned char digest[64]; unsigned char buffer[1024]; unsigned char diff; diff --git a/scripts/config.pl b/scripts/config.pl index 95e31913a2..c836b37af5 100755 --- a/scripts/config.pl +++ b/scripts/config.pl @@ -19,9 +19,9 @@ ## This file is part of Mbed TLS (https://tls.mbed.org) my $py = $0; -$py =~ s/\.pl$/.py/; +$py =~ s/\.pl$/.py/ or die "Unable to determine the name of the Python script"; exec 'python3', $py, @ARGV; -print STDERR "$0: python3: $!\n"; +print STDERR "$0: python3: $!. Trying python instead.\n"; exec 'python', $py, @ARGV; print STDERR "$0: python: $!\n"; exit 127; diff --git a/scripts/data_files/error.fmt b/scripts/data_files/error.fmt index a08742c83b..63607054ed 100644 --- a/scripts/data_files/error.fmt +++ b/scripts/data_files/error.fmt @@ -25,8 +25,7 @@ #include MBEDTLS_CONFIG_FILE #endif -#if defined(MBEDTLS_ERROR_C) || defined(MBEDTLS_ERROR_STRERROR_DUMMY) -#include "mbedtls/error.h" +#if defined(MBEDTLS_ERROR_STRERROR_DUMMY) #include #endif diff --git a/tests/suites/helpers.function b/tests/suites/helpers.function index 3e68c06571..f38502f550 100644 --- a/tests/suites/helpers.function +++ b/tests/suites/helpers.function @@ -311,11 +311,11 @@ typedef enum #define TEST_VALID_PARAM( TEST ) \ TEST_ASSERT( ( TEST, 1 ) ); -#define TEST_HELPER_ASSERT(a) if( !( a ) ) \ +#define TEST_HELPER_ASSERT(a) if( !( a ) ) \ { \ - mbedtls_fprintf( stderr, "Assertion Failed at %s:%d - %s\n", \ + mbedtls_fprintf( stderr, "Assertion Failed at %s:%d - %s\n", \ __FILE__, __LINE__, #a ); \ - mbedtls_exit( 1 ); \ + mbedtls_exit( 1 ); \ } #if defined(__GNUC__) @@ -370,6 +370,38 @@ typedef enum */ #define MAX( x, y ) ( ( x ) > ( y ) ? ( x ) : ( y ) ) +/** Allocate memory dynamically and fail the test case if this fails. + * + * You must set \p pointer to \c NULL before calling this macro and + * put `mbedtls_free( pointer )` in the test's cleanup code. + * + * If \p length is zero, the resulting \p pointer will be \c NULL. + * This is usually what we want in tests since API functions are + * supposed to accept null pointers when a buffer size is zero. + * + * This macro expands to an instruction, not an expression. + * It may jump to the \c exit label. + * + * \param pointer An lvalue where the address of the allocated buffer + * will be stored. + * This expression may be evaluated multiple times. + * \param length Number of elements to allocate. + * This expression may be evaluated multiple times. + * + */ +#define ASSERT_ALLOC( pointer, length ) \ + do \ + { \ + TEST_ASSERT( ( pointer ) == NULL ); \ + if( ( length ) != 0 ) \ + { \ + ( pointer ) = mbedtls_calloc( sizeof( *( pointer ) ), \ + ( length ) ); \ + TEST_ASSERT( ( pointer ) != NULL ); \ + } \ + } \ + while( 0 ) + /* * 32-bit integer manipulation macros (big endian) */ diff --git a/tests/suites/host_test.function b/tests/suites/host_test.function index a87dc139c0..646734081c 100644 --- a/tests/suites/host_test.function +++ b/tests/suites/host_test.function @@ -525,15 +525,6 @@ int execute_tests( int argc , const char ** argv ) mbedtls_memory_buffer_alloc_init( alloc_buf, sizeof( alloc_buf ) ); #endif - if( outcome_file_name != NULL ) - { - outcome_file = fopen( outcome_file_name, "a" ); - if( outcome_file == NULL ) - { - mbedtls_fprintf( stderr, "Unable to open outcome file. Continuing anyway.\n" ); - } - } - /* * The C standard doesn't guarantee that all-bits-0 is the representation * of a NULL pointer. We do however use that in our code for initializing @@ -555,6 +546,15 @@ int execute_tests( int argc , const char ** argv ) return( 1 ); } + if( outcome_file_name != NULL ) + { + outcome_file = fopen( outcome_file_name, "a" ); + if( outcome_file == NULL ) + { + mbedtls_fprintf( stderr, "Unable to open outcome file. Continuing anyway.\n" ); + } + } + while( arg_index < argc ) { next_arg = argv[arg_index]; @@ -607,6 +607,8 @@ int execute_tests( int argc , const char ** argv ) { mbedtls_fprintf( stderr, "Failed to open test file: %s\n", test_filename ); + if( outcome_file != NULL ) + fclose( outcome_file ); return( 1 ); }