Merge pull request #357 from gilles-peskine-arm/merge-crypto-development-20200203
Update Mbed Crypto with latest Mbed TLS changes as of 2020-02-03
diff --git a/include/mbedtls/error.h b/include/mbedtls/error.h
index 5ccebeb..82b0188 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 85beaee..27305b5 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 <string.h>
#endif
diff --git a/programs/aes/aescrypt2.c b/programs/aes/aescrypt2.c
index 8242ea7..048028d 100644
--- a/programs/aes/aescrypt2.c
+++ b/programs/aes/aescrypt2.c
@@ -96,7 +96,7 @@
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 95e3191..c836b37 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 a08742c..6360705 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 <string.h>
#endif
diff --git a/tests/suites/helpers.function b/tests/suites/helpers.function
index 3e68c06..f38502f 100644
--- a/tests/suites/helpers.function
+++ b/tests/suites/helpers.function
@@ -311,11 +311,11 @@
#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 @@
*/
#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 a87dc13..6467340 100644
--- a/tests/suites/host_test.function
+++ b/tests/suites/host_test.function
@@ -525,15 +525,6 @@
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 @@
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 @@
{
mbedtls_fprintf( stderr, "Failed to open test file: %s\n",
test_filename );
+ if( outcome_file != NULL )
+ fclose( outcome_file );
return( 1 );
}