Merge remote-tracking branch 'origin/pr/2701' into mbedtls-2.16

* origin/pr/2701:
  Add all.sh component that exercises invalid_param checks
  Remove mbedtls_param_failed from programs
  Make it easier to define MBEDTLS_PARAM_FAILED as assert
  Make test suites compatible with #include <assert.h>
  Pass -m32 to the linker as well
This commit is contained in:
Jaeden Amero 2019-06-21 13:24:18 +01:00
commit 5ecbd14fdd
54 changed files with 104 additions and 535 deletions

View File

@ -6,6 +6,10 @@ Bugfix
* Fix to allow building test suites with any warning that detects unused * Fix to allow building test suites with any warning that detects unused
functions. Fixes #1628. functions. Fixes #1628.
Changes
* Make it easier to define MBEDTLS_PARAM_FAILED as assert (which config.h
suggests). #2671
= mbed TLS 2.16.2 branch released 2019-06-11 = mbed TLS 2.16.2 branch released 2019-06-11
Security Security

View File

@ -276,28 +276,52 @@
* For example, when a function accepts as input a pointer to a buffer that may * For example, when a function accepts as input a pointer to a buffer that may
* contain untrusted data, and its documentation mentions that this pointer * contain untrusted data, and its documentation mentions that this pointer
* must not be NULL: * must not be NULL:
* - the pointer is checked to be non-NULL only if this option is enabled * - The pointer is checked to be non-NULL only if this option is enabled.
* - the content of the buffer is always validated * - The content of the buffer is always validated.
* *
* When this flag is defined, if a library function receives a parameter that * When this flag is defined, if a library function receives a parameter that
* is invalid, it will: * is invalid:
* - invoke the macro MBEDTLS_PARAM_FAILED() which by default expands to a * 1. The function will invoke the macro MBEDTLS_PARAM_FAILED().
* call to the function mbedtls_param_failed() * 2. If MBEDTLS_PARAM_FAILED() did not terminate the program, the function
* - immediately return (with a specific error code unless the function * will immediately return. If the function returns an Mbed TLS error code,
* returns void and can't communicate an error). * the error code in this case is MBEDTLS_ERR_xxx_BAD_INPUT_DATA.
* *
* When defining this flag, you also need to: * When defining this flag, you also need to arrange a definition for
* - either provide a definition of the function mbedtls_param_failed() in * MBEDTLS_PARAM_FAILED(). You can do this by any of the following methods:
* your application (see platform_util.h for its prototype) as the library * - By default, the library defines MBEDTLS_PARAM_FAILED() to call a
* calls that function, but does not provide a default definition for it, * function mbedtls_param_failed(), but the library does not define this
* - or provide a different definition of the macro MBEDTLS_PARAM_FAILED() * function. If you do not make any other arrangements, you must provide
* below if the above mechanism is not flexible enough to suit your needs. * the function mbedtls_param_failed() in your application.
* See the documentation of this macro later in this file. * See `platform_util.h` for its prototype.
* - If you enable the macro #MBEDTLS_CHECK_PARAMS_ASSERT, then the
* library defines #MBEDTLS_PARAM_FAILED(\c cond) to be `assert(cond)`.
* You can still supply an alternative definition of
* MBEDTLS_PARAM_FAILED(), which may call `assert`.
* - If you define a macro MBEDTLS_PARAM_FAILED() before including `config.h`
* or you uncomment the definition of MBEDTLS_PARAM_FAILED() in `config.h`,
* the library will call the macro that you defined and will not supply
* its own version. Note that if MBEDTLS_PARAM_FAILED() calls `assert`,
* you need to enable #MBEDTLS_CHECK_PARAMS_ASSERT so that library source
* files include `<assert.h>`.
* *
* Uncomment to enable validation of application-controlled parameters. * Uncomment to enable validation of application-controlled parameters.
*/ */
//#define MBEDTLS_CHECK_PARAMS //#define MBEDTLS_CHECK_PARAMS
/**
* \def MBEDTLS_CHECK_PARAMS_ASSERT
*
* Allow MBEDTLS_PARAM_FAILED() to call `assert`, and make it default to
* `assert`. This macro is only used if #MBEDTLS_CHECK_PARAMS is defined.
*
* If this macro is not defined, then MBEDTLS_PARAM_FAILED() defaults to
* calling a function mbedtls_param_failed(). See the documentation of
* #MBEDTLS_CHECK_PARAMS for details.
*
* Uncomment to allow MBEDTLS_PARAM_FAILED() to call `assert`.
*/
//#define MBEDTLS_CHECK_PARAMS_ASSERT
/* \} name SECTION: System support */ /* \} name SECTION: System support */
/** /**
@ -3060,13 +3084,16 @@
/** /**
* \brief This macro is invoked by the library when an invalid parameter * \brief This macro is invoked by the library when an invalid parameter
* is detected that is only checked with MBEDTLS_CHECK_PARAMS * is detected that is only checked with #MBEDTLS_CHECK_PARAMS
* (see the documentation of that option for context). * (see the documentation of that option for context).
* *
* When you leave this undefined here, a default definition is * When you leave this undefined here, the library provides
* provided that invokes the function mbedtls_param_failed(), * a default definition. If the macro #MBEDTLS_CHECK_PARAMS_ASSERT
* which is declared in platform_util.h for the benefit of the * is defined, the default definition is `assert(cond)`,
* library, but that you need to define in your application. * otherwise the default definition calls a function
* mbedtls_param_failed(). This function is declared in
* `platform_util.h` for the benefit of the library, but
* you need to define in your application.
* *
* When you define this here, this replaces the default * When you define this here, this replaces the default
* definition in platform_util.h (which no longer declares the * definition in platform_util.h (which no longer declares the
@ -3075,6 +3102,9 @@
* particular, that all the necessary declarations are visible * particular, that all the necessary declarations are visible
* from within the library - you can ensure that by providing * from within the library - you can ensure that by providing
* them in this file next to the macro definition). * them in this file next to the macro definition).
* If you define this macro to call `assert`, also define
* #MBEDTLS_CHECK_PARAMS_ASSERT so that library source files
* include `<assert.h>`.
* *
* Note that you may define this macro to expand to nothing, in * Note that you may define this macro to expand to nothing, in
* which case you don't have to worry about declarations or * which case you don't have to worry about declarations or

View File

@ -43,6 +43,12 @@ extern "C" {
#if defined(MBEDTLS_CHECK_PARAMS) #if defined(MBEDTLS_CHECK_PARAMS)
#if defined(MBEDTLS_CHECK_PARAMS_ASSERT)
/* Allow the user to define MBEDTLS_PARAM_FAILED to something like assert
* (which is what our config.h suggests). */
#include <assert.h>
#endif /* MBEDTLS_CHECK_PARAMS_ASSERT */
#if defined(MBEDTLS_PARAM_FAILED) #if defined(MBEDTLS_PARAM_FAILED)
/** An alternative definition of MBEDTLS_PARAM_FAILED has been set in config.h. /** An alternative definition of MBEDTLS_PARAM_FAILED has been set in config.h.
* *
@ -50,6 +56,11 @@ extern "C" {
* MBEDTLS_PARAM_FAILED() will expand to a call to mbedtls_param_failed(). * MBEDTLS_PARAM_FAILED() will expand to a call to mbedtls_param_failed().
*/ */
#define MBEDTLS_PARAM_FAILED_ALT #define MBEDTLS_PARAM_FAILED_ALT
#elif defined(MBEDTLS_CHECK_PARAMS_ASSERT)
#define MBEDTLS_PARAM_FAILED( cond ) assert( cond )
#define MBEDTLS_PARAM_FAILED_ALT
#else /* MBEDTLS_PARAM_FAILED */ #else /* MBEDTLS_PARAM_FAILED */
#define MBEDTLS_PARAM_FAILED( cond ) \ #define MBEDTLS_PARAM_FAILED( cond ) \
mbedtls_param_failed( #cond, __FILE__, __LINE__ ) mbedtls_param_failed( #cond, __FILE__, __LINE__ )

View File

@ -87,6 +87,9 @@ static const char *features[] = {
#if defined(MBEDTLS_CHECK_PARAMS) #if defined(MBEDTLS_CHECK_PARAMS)
"MBEDTLS_CHECK_PARAMS", "MBEDTLS_CHECK_PARAMS",
#endif /* MBEDTLS_CHECK_PARAMS */ #endif /* MBEDTLS_CHECK_PARAMS */
#if defined(MBEDTLS_CHECK_PARAMS_ASSERT)
"MBEDTLS_CHECK_PARAMS_ASSERT",
#endif /* MBEDTLS_CHECK_PARAMS_ASSERT */
#if defined(MBEDTLS_TIMING_ALT) #if defined(MBEDTLS_TIMING_ALT)
"MBEDTLS_TIMING_ALT", "MBEDTLS_TIMING_ALT",
#endif /* MBEDTLS_TIMING_ALT */ #endif /* MBEDTLS_TIMING_ALT */

View File

@ -80,17 +80,6 @@ int main( void )
} }
#else #else
#if defined(MBEDTLS_CHECK_PARAMS)
#include "mbedtls/platform_util.h"
void mbedtls_param_failed( const char *failure_condition,
const char *file,
int line )
{
mbedtls_printf( "%s:%i: Input param failed - %s\n",
file, line, failure_condition );
mbedtls_exit( MBEDTLS_EXIT_FAILURE );
}
#endif
int main( int argc, char *argv[] ) int main( int argc, char *argv[] )
{ {

View File

@ -82,17 +82,6 @@ int main( void )
} }
#else #else
#if defined(MBEDTLS_CHECK_PARAMS)
#include "mbedtls/platform_util.h"
void mbedtls_param_failed( const char *failure_condition,
const char *file,
int line )
{
mbedtls_printf( "%s:%i: Input param failed - %s\n",
file, line, failure_condition );
mbedtls_exit( MBEDTLS_EXIT_FAILURE );
}
#endif
int main( int argc, char *argv[] ) int main( int argc, char *argv[] )
{ {

View File

@ -52,17 +52,6 @@ int main( void )
} }
#else #else
#if defined(MBEDTLS_CHECK_PARAMS)
#include "mbedtls/platform_util.h"
void mbedtls_param_failed( const char *failure_condition,
const char *file,
int line )
{
mbedtls_printf( "%s:%i: Input param failed - %s\n",
file, line, failure_condition );
mbedtls_exit( MBEDTLS_EXIT_FAILURE );
}
#endif
static int generic_wrapper( const mbedtls_md_info_t *md_info, char *filename, unsigned char *sum ) static int generic_wrapper( const mbedtls_md_info_t *md_info, char *filename, unsigned char *sum )
{ {

View File

@ -48,17 +48,6 @@ int main( void )
} }
#else #else
#if defined(MBEDTLS_CHECK_PARAMS)
#include "mbedtls/platform_util.h"
void mbedtls_param_failed( const char *failure_condition,
const char *file,
int line )
{
mbedtls_printf( "%s:%i: Input param failed - %s\n",
file, line, failure_condition );
mbedtls_exit( MBEDTLS_EXIT_FAILURE );
}
#endif
int main( void ) int main( void )
{ {

View File

@ -72,17 +72,6 @@ int main( void )
} }
#else #else
#if defined(MBEDTLS_CHECK_PARAMS)
#include "mbedtls/platform_util.h"
void mbedtls_param_failed( const char *failure_condition,
const char *file,
int line )
{
mbedtls_printf( "%s:%i: Input param failed - %s\n",
file, line, failure_condition );
mbedtls_exit( MBEDTLS_EXIT_FAILURE );
}
#endif
int main( void ) int main( void )
{ {

View File

@ -69,17 +69,6 @@ int main( void )
*/ */
#define GENERATOR "4" #define GENERATOR "4"
#if defined(MBEDTLS_CHECK_PARAMS)
#include "mbedtls/platform_util.h"
void mbedtls_param_failed( const char *failure_condition,
const char *file,
int line )
{
mbedtls_printf( "%s:%i: Input param failed - %s\n",
file, line, failure_condition );
mbedtls_exit( MBEDTLS_EXIT_FAILURE );
}
#endif
int main( int argc, char **argv ) int main( int argc, char **argv )
{ {

View File

@ -72,17 +72,6 @@ int main( void )
} }
#else #else
#if defined(MBEDTLS_CHECK_PARAMS)
#include "mbedtls/platform_util.h"
void mbedtls_param_failed( const char *failure_condition,
const char *file,
int line )
{
mbedtls_printf( "%s:%i: Input param failed - %s\n",
file, line, failure_condition );
mbedtls_exit( MBEDTLS_EXIT_FAILURE );
}
#endif
int main( void ) int main( void )
{ {

View File

@ -53,17 +53,6 @@ int main( void )
#include "mbedtls/ctr_drbg.h" #include "mbedtls/ctr_drbg.h"
#include "mbedtls/ecdh.h" #include "mbedtls/ecdh.h"
#if defined(MBEDTLS_CHECK_PARAMS)
#include "mbedtls/platform_util.h"
void mbedtls_param_failed( const char *failure_condition,
const char *file,
int line )
{
mbedtls_printf( "%s:%i: Input param failed - %s\n",
file, line, failure_condition );
mbedtls_exit( MBEDTLS_EXIT_FAILURE );
}
#endif
int main( int argc, char *argv[] ) int main( int argc, char *argv[] )
{ {

View File

@ -100,17 +100,6 @@ static void dump_pubkey( const char *title, mbedtls_ecdsa_context *key )
#define dump_pubkey( a, b ) #define dump_pubkey( a, b )
#endif #endif
#if defined(MBEDTLS_CHECK_PARAMS)
#include "mbedtls/platform_util.h"
void mbedtls_param_failed( const char *failure_condition,
const char *file,
int line )
{
mbedtls_printf( "%s:%i: Input param failed - %s\n",
file, line, failure_condition );
mbedtls_exit( MBEDTLS_EXIT_FAILURE );
}
#endif
int main( int argc, char *argv[] ) int main( int argc, char *argv[] )
{ {

View File

@ -137,17 +137,6 @@ int main( void )
} }
#else #else
#if defined(MBEDTLS_CHECK_PARAMS)
#include "mbedtls/platform_util.h"
void mbedtls_param_failed( const char *failure_condition,
const char *file,
int line )
{
mbedtls_printf( "%s:%i: Input param failed - %s\n",
file, line, failure_condition );
mbedtls_exit( MBEDTLS_EXIT_FAILURE );
}
#endif
/* /*
* global options * global options

View File

@ -64,7 +64,6 @@
" password_file=%%s default: \"\"\n" \ " password_file=%%s default: \"\"\n" \
"\n" "\n"
#if !defined(MBEDTLS_BIGNUM_C) || \ #if !defined(MBEDTLS_BIGNUM_C) || \
!defined(MBEDTLS_PK_PARSE_C) || !defined(MBEDTLS_FS_IO) !defined(MBEDTLS_PK_PARSE_C) || !defined(MBEDTLS_FS_IO)
int main( void ) int main( void )
@ -75,17 +74,6 @@ int main( void )
} }
#else #else
#if defined(MBEDTLS_CHECK_PARAMS)
#include "mbedtls/platform_util.h"
void mbedtls_param_failed( const char *failure_condition,
const char *file,
int line )
{
mbedtls_printf( "%s:%i: Input param failed - %s\n",
file, line, failure_condition );
mbedtls_exit( MBEDTLS_EXIT_FAILURE );
}
#endif
/* /*
* global options * global options

View File

@ -98,17 +98,6 @@ int main( void )
} }
#else #else
#if defined(MBEDTLS_CHECK_PARAMS)
#include "mbedtls/platform_util.h"
void mbedtls_param_failed( const char *failure_condition,
const char *file,
int line )
{
mbedtls_printf( "%s:%i: Input param failed - %s\n",
file, line, failure_condition );
mbedtls_exit( MBEDTLS_EXIT_FAILURE );
}
#endif
/* /*
* global options * global options

View File

@ -50,17 +50,6 @@ int main( void )
} }
#else #else
#if defined(MBEDTLS_CHECK_PARAMS)
#include "mbedtls/platform_util.h"
void mbedtls_param_failed( const char *failure_condition,
const char *file,
int line )
{
mbedtls_printf( "%s:%i: Input param failed - %s\n",
file, line, failure_condition );
mbedtls_exit( MBEDTLS_EXIT_FAILURE );
}
#endif
int main( void ) int main( void )
{ {

View File

@ -48,7 +48,6 @@
#include <string.h> #include <string.h>
#endif #endif
#if !defined(MBEDTLS_BIGNUM_C) || !defined(MBEDTLS_PK_PARSE_C) || \ #if !defined(MBEDTLS_BIGNUM_C) || !defined(MBEDTLS_PK_PARSE_C) || \
!defined(MBEDTLS_FS_IO) || !defined(MBEDTLS_ENTROPY_C) || \ !defined(MBEDTLS_FS_IO) || !defined(MBEDTLS_ENTROPY_C) || \
!defined(MBEDTLS_CTR_DRBG_C) !defined(MBEDTLS_CTR_DRBG_C)
@ -61,17 +60,6 @@ int main( void )
} }
#else #else
#if defined(MBEDTLS_CHECK_PARAMS)
#include "mbedtls/platform_util.h"
void mbedtls_param_failed( const char *failure_condition,
const char *file,
int line )
{
mbedtls_printf( "%s:%i: Input param failed - %s\n",
file, line, failure_condition );
mbedtls_exit( MBEDTLS_EXIT_FAILURE );
}
#endif
int main( int argc, char *argv[] ) int main( int argc, char *argv[] )
{ {

View File

@ -61,17 +61,6 @@ int main( void )
} }
#else #else
#if defined(MBEDTLS_CHECK_PARAMS)
#include "mbedtls/platform_util.h"
void mbedtls_param_failed( const char *failure_condition,
const char *file,
int line )
{
mbedtls_printf( "%s:%i: Input param failed - %s\n",
file, line, failure_condition );
mbedtls_exit( MBEDTLS_EXIT_FAILURE );
}
#endif
int main( int argc, char *argv[] ) int main( int argc, char *argv[] )
{ {

View File

@ -60,17 +60,6 @@ int main( void )
#include <stdio.h> #include <stdio.h>
#include <string.h> #include <string.h>
#if defined(MBEDTLS_CHECK_PARAMS)
#include "mbedtls/platform_util.h"
void mbedtls_param_failed( const char *failure_condition,
const char *file,
int line )
{
mbedtls_printf( "%s:%i: Input param failed - %s\n",
file, line, failure_condition );
mbedtls_exit( MBEDTLS_EXIT_FAILURE );
}
#endif
int main( int argc, char *argv[] ) int main( int argc, char *argv[] )
{ {

View File

@ -56,17 +56,6 @@ int main( void )
#include <stdio.h> #include <stdio.h>
#include <string.h> #include <string.h>
#if defined(MBEDTLS_CHECK_PARAMS)
#include "mbedtls/platform_util.h"
void mbedtls_param_failed( const char *failure_condition,
const char *file,
int line )
{
mbedtls_printf( "%s:%i: Input param failed - %s\n",
file, line, failure_condition );
mbedtls_exit( MBEDTLS_EXIT_FAILURE );
}
#endif
int main( int argc, char *argv[] ) int main( int argc, char *argv[] )
{ {
@ -112,7 +101,6 @@ int main( int argc, char *argv[] )
goto exit; goto exit;
} }
i = fread( buf, 1, sizeof(buf), f ); i = fread( buf, 1, sizeof(buf), f );
fclose( f ); fclose( f );

View File

@ -59,17 +59,6 @@ int main( void )
} }
#else #else
#if defined(MBEDTLS_CHECK_PARAMS)
#include "mbedtls/platform_util.h"
void mbedtls_param_failed( const char *failure_condition,
const char *file,
int line )
{
mbedtls_printf( "%s:%i: Input param failed - %s\n",
file, line, failure_condition );
mbedtls_exit( MBEDTLS_EXIT_FAILURE );
}
#endif
int main( int argc, char *argv[] ) int main( int argc, char *argv[] )
{ {

View File

@ -59,17 +59,6 @@ int main( void )
} }
#else #else
#if defined(MBEDTLS_CHECK_PARAMS)
#include "mbedtls/platform_util.h"
void mbedtls_param_failed( const char *failure_condition,
const char *file,
int line )
{
mbedtls_printf( "%s:%i: Input param failed - %s\n",
file, line, failure_condition );
mbedtls_exit( MBEDTLS_EXIT_FAILURE );
}
#endif
int main( int argc, char *argv[] ) int main( int argc, char *argv[] )
{ {

View File

@ -64,17 +64,6 @@ int main( void )
} }
#else #else
#if defined(MBEDTLS_CHECK_PARAMS)
#include "mbedtls/platform_util.h"
void mbedtls_param_failed( const char *failure_condition,
const char *file,
int line )
{
mbedtls_printf( "%s:%i: Input param failed - %s\n",
file, line, failure_condition );
mbedtls_exit( MBEDTLS_EXIT_FAILURE );
}
#endif
int main( void ) int main( void )
{ {

View File

@ -56,17 +56,6 @@ int main( void )
#include <stdio.h> #include <stdio.h>
#include <string.h> #include <string.h>
#if defined(MBEDTLS_CHECK_PARAMS)
#include "mbedtls/platform_util.h"
void mbedtls_param_failed( const char *failure_condition,
const char *file,
int line )
{
mbedtls_printf( "%s:%i: Input param failed - %s\n",
file, line, failure_condition );
mbedtls_exit( MBEDTLS_EXIT_FAILURE );
}
#endif
int main( int argc, char *argv[] ) int main( int argc, char *argv[] )
{ {

View File

@ -60,17 +60,6 @@ int main( void )
#include <stdio.h> #include <stdio.h>
#include <string.h> #include <string.h>
#if defined(MBEDTLS_CHECK_PARAMS)
#include "mbedtls/platform_util.h"
void mbedtls_param_failed( const char *failure_condition,
const char *file,
int line )
{
mbedtls_printf( "%s:%i: Input param failed - %s\n",
file, line, failure_condition );
mbedtls_exit( MBEDTLS_EXIT_FAILURE );
}
#endif
int main( int argc, char *argv[] ) int main( int argc, char *argv[] )
{ {

View File

@ -55,17 +55,6 @@ int main( void )
#include <stdio.h> #include <stdio.h>
#include <string.h> #include <string.h>
#if defined(MBEDTLS_CHECK_PARAMS)
#include "mbedtls/platform_util.h"
void mbedtls_param_failed( const char *failure_condition,
const char *file,
int line )
{
mbedtls_printf( "%s:%i: Input param failed - %s\n",
file, line, failure_condition );
mbedtls_exit( MBEDTLS_EXIT_FAILURE );
}
#endif
int main( int argc, char *argv[] ) int main( int argc, char *argv[] )
{ {

View File

@ -60,17 +60,6 @@ int main( void )
#include <stdio.h> #include <stdio.h>
#include <string.h> #include <string.h>
#if defined(MBEDTLS_CHECK_PARAMS)
#include "mbedtls/platform_util.h"
void mbedtls_param_failed( const char *failure_condition,
const char *file,
int line )
{
mbedtls_printf( "%s:%i: Input param failed - %s\n",
file, line, failure_condition );
mbedtls_exit( MBEDTLS_EXIT_FAILURE );
}
#endif
int main( int argc, char *argv[] ) int main( int argc, char *argv[] )
{ {
@ -125,7 +114,6 @@ int main( int argc, char *argv[] )
goto exit; goto exit;
} }
i = fread( buf, 1, MBEDTLS_MPI_MAX_SIZE, f ); i = fread( buf, 1, MBEDTLS_MPI_MAX_SIZE, f );
fclose( f ); fclose( f );

View File

@ -51,17 +51,6 @@ int main( void )
} }
#else #else
#if defined(MBEDTLS_CHECK_PARAMS)
#include "mbedtls/platform_util.h"
void mbedtls_param_failed( const char *failure_condition,
const char *file,
int line )
{
mbedtls_printf( "%s:%i: Input param failed - %s\n",
file, line, failure_condition );
mbedtls_exit( MBEDTLS_EXIT_FAILURE );
}
#endif
int main( int argc, char *argv[] ) int main( int argc, char *argv[] )
{ {

View File

@ -54,17 +54,6 @@ int main( void )
} }
#else #else
#if defined(MBEDTLS_CHECK_PARAMS)
#include "mbedtls/platform_util.h"
void mbedtls_param_failed( const char *failure_condition,
const char *file,
int line )
{
mbedtls_printf( "%s:%i: Input param failed - %s\n",
file, line, failure_condition );
mbedtls_exit( MBEDTLS_EXIT_FAILURE );
}
#endif
int main( int argc, char *argv[] ) int main( int argc, char *argv[] )
{ {

View File

@ -52,17 +52,6 @@ int main( void )
} }
#else #else
#if defined(MBEDTLS_CHECK_PARAMS)
#include "mbedtls/platform_util.h"
void mbedtls_param_failed( const char *failure_condition,
const char *file,
int line )
{
mbedtls_printf( "%s:%i: Input param failed - %s\n",
file, line, failure_condition );
mbedtls_exit( MBEDTLS_EXIT_FAILURE );
}
#endif
int main( int argc, char *argv[] ) int main( int argc, char *argv[] )
{ {

View File

@ -82,17 +82,6 @@ int main( void )
#define DEBUG_LEVEL 0 #define DEBUG_LEVEL 0
#if defined(MBEDTLS_CHECK_PARAMS)
#include "mbedtls/platform_util.h"
void mbedtls_param_failed( const char *failure_condition,
const char *file,
int line )
{
mbedtls_printf( "%s:%i: Input param failed - %s\n",
file, line, failure_condition );
mbedtls_exit( MBEDTLS_EXIT_FAILURE );
}
#endif
static void my_debug( void *ctx, int level, static void my_debug( void *ctx, int level,
const char *file, int line, const char *file, int line,

View File

@ -91,17 +91,6 @@ int main( void )
#define READ_TIMEOUT_MS 10000 /* 5 seconds */ #define READ_TIMEOUT_MS 10000 /* 5 seconds */
#define DEBUG_LEVEL 0 #define DEBUG_LEVEL 0
#if defined(MBEDTLS_CHECK_PARAMS)
#include "mbedtls/platform_util.h"
void mbedtls_param_failed( const char *failure_condition,
const char *file,
int line )
{
mbedtls_printf( "%s:%i: Input param failed - %s\n",
file, line, failure_condition );
mbedtls_exit( MBEDTLS_EXIT_FAILURE );
}
#endif
static void my_debug( void *ctx, int level, static void my_debug( void *ctx, int level,
const char *file, int line, const char *file, int line,

View File

@ -166,17 +166,6 @@ enum exit_codes
ssl_write_failed, ssl_write_failed,
}; };
#if defined(MBEDTLS_CHECK_PARAMS)
#include "mbedtls/platform_util.h"
void mbedtls_param_failed( const char *failure_condition,
const char *file,
int line )
{
mbedtls_printf( "%s:%i: Input param failed - %s\n",
file, line, failure_condition );
mbedtls_exit( MBEDTLS_EXIT_FAILURE );
}
#endif
int main( void ) int main( void )
{ {

View File

@ -274,6 +274,14 @@ int query_config( const char *config )
} }
#endif /* MBEDTLS_CHECK_PARAMS */ #endif /* MBEDTLS_CHECK_PARAMS */
#if defined(MBEDTLS_CHECK_PARAMS_ASSERT)
if( strcmp( "MBEDTLS_CHECK_PARAMS_ASSERT", config ) == 0 )
{
MACRO_EXPANSION_TO_STR( MBEDTLS_CHECK_PARAMS_ASSERT );
return( 0 );
}
#endif /* MBEDTLS_CHECK_PARAMS_ASSERT */
#if defined(MBEDTLS_TIMING_ALT) #if defined(MBEDTLS_TIMING_ALT)
if( strcmp( "MBEDTLS_TIMING_ALT", config ) == 0 ) if( strcmp( "MBEDTLS_TIMING_ALT", config ) == 0 )
{ {

View File

@ -71,17 +71,6 @@ int main( void )
#define DEBUG_LEVEL 1 #define DEBUG_LEVEL 1
#if defined(MBEDTLS_CHECK_PARAMS)
#include "mbedtls/platform_util.h"
void mbedtls_param_failed( const char *failure_condition,
const char *file,
int line )
{
mbedtls_printf( "%s:%i: Input param failed - %s\n",
file, line, failure_condition );
mbedtls_exit( MBEDTLS_EXIT_FAILURE );
}
#endif
static void my_debug( void *ctx, int level, static void my_debug( void *ctx, int level,
const char *file, int line, const char *file, int line,

View File

@ -323,17 +323,6 @@ int main( void )
#define ALPN_LIST_SIZE 10 #define ALPN_LIST_SIZE 10
#define CURVE_LIST_SIZE 20 #define CURVE_LIST_SIZE 20
#if defined(MBEDTLS_CHECK_PARAMS)
#include "mbedtls/platform_util.h"
void mbedtls_param_failed( const char *failure_condition,
const char *file,
int line )
{
mbedtls_printf( "%s:%i: Input param failed - %s\n",
file, line, failure_condition );
mbedtls_exit( MBEDTLS_EXIT_FAILURE );
}
#endif
/* /*
* global options * global options

View File

@ -87,17 +87,6 @@ int main( void )
#define DEBUG_LEVEL 0 #define DEBUG_LEVEL 0
#if defined(MBEDTLS_CHECK_PARAMS)
#include "mbedtls/platform_util.h"
void mbedtls_param_failed( const char *failure_condition,
const char *file,
int line )
{
mbedtls_printf( "%s:%i: Input param failed - %s\n",
file, line, failure_condition );
mbedtls_exit( MBEDTLS_EXIT_FAILURE );
}
#endif
static void my_debug( void *ctx, int level, static void my_debug( void *ctx, int level,
const char *file, int line, const char *file, int line,

View File

@ -142,17 +142,6 @@ int main( void )
" force_ciphersuite=<name> default: all enabled\n" \ " force_ciphersuite=<name> default: all enabled\n" \
" acceptable ciphersuite names:\n" " acceptable ciphersuite names:\n"
#if defined(MBEDTLS_CHECK_PARAMS)
#include "mbedtls/platform_util.h"
void mbedtls_param_failed( const char *failure_condition,
const char *file,
int line )
{
mbedtls_printf( "%s:%i: Input param failed - %s\n",
file, line, failure_condition );
mbedtls_exit( MBEDTLS_EXIT_FAILURE );
}
#endif
/* /*
* global options * global options

View File

@ -81,17 +81,6 @@ int main( void )
#include "mbedtls/memory_buffer_alloc.h" #include "mbedtls/memory_buffer_alloc.h"
#endif #endif
#if defined(MBEDTLS_CHECK_PARAMS)
#include "mbedtls/platform_util.h"
void mbedtls_param_failed( const char *failure_condition,
const char *file,
int line )
{
mbedtls_printf( "%s:%i: Input param failed - %s\n",
file, line, failure_condition );
mbedtls_exit( MBEDTLS_EXIT_FAILURE );
}
#endif
#define HTTP_RESPONSE \ #define HTTP_RESPONSE \
"HTTP/1.0 200 OK\r\nContent-Type: text/html\r\n\r\n" \ "HTTP/1.0 200 OK\r\nContent-Type: text/html\r\n\r\n" \
@ -463,7 +452,6 @@ int main( void )
mbedtls_printf( " ok\n" ); mbedtls_printf( " ok\n" );
/* /*
* 2. Setup the listening TCP socket * 2. Setup the listening TCP socket
*/ */

View File

@ -83,17 +83,6 @@ int main( void )
#define DEBUG_LEVEL 0 #define DEBUG_LEVEL 0
#if defined(MBEDTLS_CHECK_PARAMS)
#include "mbedtls/platform_util.h"
void mbedtls_param_failed( const char *failure_condition,
const char *file,
int line )
{
mbedtls_printf( "%s:%i: Input param failed - %s\n",
file, line, failure_condition );
mbedtls_exit( MBEDTLS_EXIT_FAILURE );
}
#endif
static void my_debug( void *ctx, int level, static void my_debug( void *ctx, int level,
const char *file, int line, const char *file, int line,

View File

@ -429,7 +429,6 @@ int main( void )
" is printed if it is defined\n" \ " is printed if it is defined\n" \
" acceptable ciphersuite names:\n" " acceptable ciphersuite names:\n"
#define ALPN_LIST_SIZE 10 #define ALPN_LIST_SIZE 10
#define CURVE_LIST_SIZE 20 #define CURVE_LIST_SIZE 20
@ -445,17 +444,6 @@ int main( void )
(out_be)[(i) + 7] = (unsigned char)( ( (in_le) >> 0 ) & 0xFF ); \ (out_be)[(i) + 7] = (unsigned char)( ( (in_le) >> 0 ) & 0xFF ); \
} }
#if defined(MBEDTLS_CHECK_PARAMS)
#include "mbedtls/platform_util.h"
void mbedtls_param_failed( const char *failure_condition,
const char *file,
int line )
{
mbedtls_printf( "%s:%i: Input param failed - %s\n",
file, line, failure_condition );
mbedtls_exit( MBEDTLS_EXIT_FAILURE );
}
#endif
/* /*
* global options * global options

View File

@ -258,17 +258,6 @@ typedef struct {
rsa, dhm, ecdsa, ecdh; rsa, dhm, ecdsa, ecdh;
} todo_list; } todo_list;
#if defined(MBEDTLS_CHECK_PARAMS)
#include "mbedtls/platform_util.h"
void mbedtls_param_failed( const char *failure_condition,
const char *file,
int line )
{
mbedtls_printf( "%s:%i: Input param failed - %s\n",
file, line, failure_condition );
mbedtls_exit( MBEDTLS_EXIT_FAILURE );
}
#endif
int main( int argc, char *argv[] ) int main( int argc, char *argv[] )
{ {

View File

@ -77,17 +77,6 @@
#include "mbedtls/memory_buffer_alloc.h" #include "mbedtls/memory_buffer_alloc.h"
#endif #endif
#if defined(MBEDTLS_CHECK_PARAMS)
#include "mbedtls/platform_util.h"
void mbedtls_param_failed( const char *failure_condition,
const char *file,
int line )
{
mbedtls_printf( "%s:%i: Input param failed - %s\n",
file, line, failure_condition );
mbedtls_exit( MBEDTLS_EXIT_FAILURE );
}
#endif
static int test_snprintf( size_t n, const char ref_buf[10], int ref_ret ) static int test_snprintf( size_t n, const char ref_buf[10], int ref_ret )
{ {

View File

@ -65,17 +65,6 @@ int main( void )
} }
#else #else
#if defined(MBEDTLS_CHECK_PARAMS)
#define mbedtls_exit exit
void mbedtls_param_failed( const char *failure_condition,
const char *file,
int line )
{
mbedtls_printf( "%s:%i: Input param failed - %s\n",
file, line, failure_condition );
mbedtls_exit( MBEDTLS_EXIT_FAILURE );
}
#endif
/* /*
* global options * global options

View File

@ -100,17 +100,6 @@ int main( void )
" permissive=%%d default: 0 (disabled)\n" \ " permissive=%%d default: 0 (disabled)\n" \
"\n" "\n"
#if defined(MBEDTLS_CHECK_PARAMS)
#define mbedtls_exit exit
void mbedtls_param_failed( const char *failure_condition,
const char *file,
int line )
{
mbedtls_printf( "%s:%i: Input param failed - %s\n",
file, line, failure_condition );
mbedtls_exit( MBEDTLS_EXIT_FAILURE );
}
#endif
/* /*
* global options * global options

View File

@ -107,16 +107,6 @@ int main( void )
" SHA384, SHA512\n" \ " SHA384, SHA512\n" \
"\n" "\n"
#if defined(MBEDTLS_CHECK_PARAMS)
void mbedtls_param_failed( const char *failure_condition,
const char *file,
int line )
{
mbedtls_printf( "%s:%i: Input param failed - %s\n",
file, line, failure_condition );
mbedtls_exit( MBEDTLS_EXIT_FAILURE );
}
#endif
/* /*
* global options * global options

View File

@ -154,17 +154,6 @@ int main( void )
" object_signing_ca\n" \ " object_signing_ca\n" \
"\n" "\n"
#if defined(MBEDTLS_CHECK_PARAMS)
#define mbedtls_exit exit
void mbedtls_param_failed( const char *failure_condition,
const char *file,
int line )
{
mbedtls_printf( "%s:%i: Input param failed - %s\n",
file, line, failure_condition );
mbedtls_exit( MBEDTLS_EXIT_FAILURE );
}
#endif
/* /*
* global options * global options

View File

@ -61,17 +61,6 @@ int main( void )
" filename=%%s default: crl.pem\n" \ " filename=%%s default: crl.pem\n" \
"\n" "\n"
#if defined(MBEDTLS_CHECK_PARAMS)
#define mbedtls_exit exit
void mbedtls_param_failed( const char *failure_condition,
const char *file,
int line )
{
mbedtls_printf( "%s:%i: Input param failed - %s\n",
file, line, failure_condition );
mbedtls_exit( MBEDTLS_EXIT_FAILURE );
}
#endif
/* /*
* global options * global options

View File

@ -61,17 +61,6 @@ int main( void )
" filename=%%s default: cert.req\n" \ " filename=%%s default: cert.req\n" \
"\n" "\n"
#if defined(MBEDTLS_CHECK_PARAMS)
#define mbedtls_exit exit
void mbedtls_param_failed( const char *failure_condition,
const char *file,
int line )
{
mbedtls_printf( "%s:%i: Input param failed - %s\n",
file, line, failure_condition );
mbedtls_exit( MBEDTLS_EXIT_FAILURE );
}
#endif
/* /*
* global options * global options

View File

@ -794,9 +794,21 @@ component_build_default_make_gcc_and_cxx () {
make TEST_CPP=1 make TEST_CPP=1
} }
component_test_check_params_functionality () {
msg "build+test: MBEDTLS_CHECK_PARAMS functionality"
scripts/config.pl full # includes CHECK_PARAMS
# Make MBEDTLS_PARAM_FAILED call mbedtls_param_failed().
scripts/config.pl unset MBEDTLS_CHECK_PARAMS_ASSERT
scripts/config.pl unset MBEDTLS_MEMORY_BUFFER_ALLOC_C
# Only build and run tests. Do not build sample programs, because
# they don't have a mbedtls_param_failed() function.
make CC=gcc CFLAGS='-Werror -O1' lib test
}
component_test_check_params_without_platform () { component_test_check_params_without_platform () {
msg "build+test: MBEDTLS_CHECK_PARAMS without MBEDTLS_PLATFORM_C" msg "build+test: MBEDTLS_CHECK_PARAMS without MBEDTLS_PLATFORM_C"
scripts/config.pl full # includes CHECK_PARAMS scripts/config.pl full # includes CHECK_PARAMS
# Keep MBEDTLS_PARAM_FAILED as assert.
scripts/config.pl unset MBEDTLS_MEMORY_BACKTRACE # too slow for tests scripts/config.pl unset MBEDTLS_MEMORY_BACKTRACE # too slow for tests
scripts/config.pl unset MBEDTLS_MEMORY_BUFFER_ALLOC_C scripts/config.pl unset MBEDTLS_MEMORY_BUFFER_ALLOC_C
scripts/config.pl unset MBEDTLS_PLATFORM_EXIT_ALT scripts/config.pl unset MBEDTLS_PLATFORM_EXIT_ALT
@ -814,6 +826,7 @@ component_test_check_params_silent () {
msg "build+test: MBEDTLS_CHECK_PARAMS with alternative MBEDTLS_PARAM_FAILED()" msg "build+test: MBEDTLS_CHECK_PARAMS with alternative MBEDTLS_PARAM_FAILED()"
scripts/config.pl full # includes CHECK_PARAMS scripts/config.pl full # includes CHECK_PARAMS
scripts/config.pl unset MBEDTLS_MEMORY_BACKTRACE # too slow for tests scripts/config.pl unset MBEDTLS_MEMORY_BACKTRACE # too slow for tests
# Set MBEDTLS_PARAM_FAILED to nothing.
sed -i 's/.*\(#define MBEDTLS_PARAM_FAILED( cond )\).*/\1/' "$CONFIG_H" sed -i 's/.*\(#define MBEDTLS_PARAM_FAILED( cond )\).*/\1/' "$CONFIG_H"
make CC=gcc CFLAGS='-Werror -O1' all test make CC=gcc CFLAGS='-Werror -O1' all test
} }
@ -961,7 +974,7 @@ component_test_m32_o0 () {
# Build once with -O0, to compile out the i386 specific inline assembly # Build once with -O0, to compile out the i386 specific inline assembly
msg "build: i386, make, gcc -O0 (ASan build)" # ~ 30s msg "build: i386, make, gcc -O0 (ASan build)" # ~ 30s
scripts/config.pl full scripts/config.pl full
make CC=gcc CFLAGS='-O0 -Werror -Wall -Wextra -m32 -fsanitize=address' make CC=gcc CFLAGS='-O0 -Werror -Wall -Wextra -m32 -fsanitize=address' LDFLAGS='-m32'
msg "test: i386, make, gcc -O0 (ASan build)" msg "test: i386, make, gcc -O0 (ASan build)"
make test make test
@ -980,7 +993,7 @@ component_test_m32_o1 () {
scripts/config.pl unset MBEDTLS_MEMORY_BACKTRACE scripts/config.pl unset MBEDTLS_MEMORY_BACKTRACE
scripts/config.pl unset MBEDTLS_MEMORY_BUFFER_ALLOC_C scripts/config.pl unset MBEDTLS_MEMORY_BUFFER_ALLOC_C
scripts/config.pl unset MBEDTLS_MEMORY_DEBUG scripts/config.pl unset MBEDTLS_MEMORY_DEBUG
make CC=gcc CFLAGS='-O1 -Werror -Wall -Wextra -m32 -fsanitize=address' make CC=gcc CFLAGS='-O1 -Werror -Wall -Wextra -m32 -fsanitize=address' LDFLAGS='-m32'
msg "test: i386, make, gcc -O1 (ASan build)" msg "test: i386, make, gcc -O1 (ASan build)"
make test make test
@ -995,7 +1008,7 @@ support_test_m32_o1 () {
component_test_mx32 () { component_test_mx32 () {
msg "build: 64-bit ILP32, make, gcc" # ~ 30s msg "build: 64-bit ILP32, make, gcc" # ~ 30s
scripts/config.pl full scripts/config.pl full
make CC=gcc CFLAGS='-Werror -Wall -Wextra -mx32' make CC=gcc CFLAGS='-Werror -Wall -Wextra -mx32' LDFLAGS='-mx32'
msg "test: 64-bit ILP32, make, gcc" msg "test: 64-bit ILP32, make, gcc"
make test make test

View File

@ -207,7 +207,7 @@ typedef enum
#define TEST_VALID_PARAM( TEST ) \ #define TEST_VALID_PARAM( TEST ) \
TEST_ASSERT( ( TEST, 1 ) ); TEST_ASSERT( ( TEST, 1 ) );
#define 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 ); \ __FILE__, __LINE__, #a ); \
@ -373,7 +373,7 @@ int unhexify( unsigned char *obuf, const char *ibuf )
{ {
unsigned char c, c2; unsigned char c, c2;
int len = strlen( ibuf ) / 2; int len = strlen( ibuf ) / 2;
assert( strlen( ibuf ) % 2 == 0 ); /* must be even number of bytes */ TEST_HELPER_ASSERT( strlen( ibuf ) % 2 == 0 ); /* must be even number of bytes */
while( *ibuf != 0 ) while( *ibuf != 0 )
{ {
@ -385,7 +385,7 @@ int unhexify( unsigned char *obuf, const char *ibuf )
else if( c >= 'A' && c <= 'F' ) else if( c >= 'A' && c <= 'F' )
c -= 'A' - 10; c -= 'A' - 10;
else else
assert( 0 ); TEST_HELPER_ASSERT( 0 );
c2 = *ibuf++; c2 = *ibuf++;
if( c2 >= '0' && c2 <= '9' ) if( c2 >= '0' && c2 <= '9' )
@ -395,7 +395,7 @@ int unhexify( unsigned char *obuf, const char *ibuf )
else if( c2 >= 'A' && c2 <= 'F' ) else if( c2 >= 'A' && c2 <= 'F' )
c2 -= 'A' - 10; c2 -= 'A' - 10;
else else
assert( 0 ); TEST_HELPER_ASSERT( 0 );
*obuf++ = ( c << 4 ) | c2; *obuf++ = ( c << 4 ) | c2;
} }
@ -440,7 +440,7 @@ static unsigned char *zero_alloc( size_t len )
size_t actual_len = ( len != 0 ) ? len : 1; size_t actual_len = ( len != 0 ) ? len : 1;
p = mbedtls_calloc( 1, actual_len ); p = mbedtls_calloc( 1, actual_len );
assert( p != NULL ); TEST_HELPER_ASSERT( p != NULL );
memset( p, 0x00, actual_len ); memset( p, 0x00, actual_len );
@ -467,7 +467,7 @@ unsigned char *unhexify_alloc( const char *ibuf, size_t *olen )
return( zero_alloc( *olen ) ); return( zero_alloc( *olen ) );
obuf = mbedtls_calloc( 1, *olen ); obuf = mbedtls_calloc( 1, *olen );
assert( obuf != NULL ); TEST_HELPER_ASSERT( obuf != NULL );
(void) unhexify( obuf, ibuf ); (void) unhexify( obuf, ibuf );

View File

@ -179,7 +179,7 @@ static int parse_arguments( char *buf, size_t len, char **params,
if( p + 1 < buf + len ) if( p + 1 < buf + len )
{ {
cur = p + 1; cur = p + 1;
assert( cnt < params_len ); TEST_HELPER_ASSERT( cnt < params_len );
params[cnt++] = cur; params[cnt++] = cur;
} }
*p = '\0'; *p = '\0';

View File

@ -13,11 +13,11 @@
*/ */
#define INCR_ASSERT(p, start, len, step) do \ #define INCR_ASSERT(p, start, len, step) do \
{ \ { \
assert( ( p ) >= ( start ) ); \ TEST_HELPER_ASSERT( ( p ) >= ( start ) ); \
assert( sizeof( *( p ) ) == sizeof( *( start ) ) ); \ TEST_HELPER_ASSERT( sizeof( *( p ) ) == sizeof( *( start ) ) ); \
/* <= is checked to support use inside a loop where \ /* <= is checked to support use inside a loop where \
pointer is incremented after reading data. */ \ pointer is incremented after reading data. */ \
assert( (uint32_t)( ( ( p ) - ( start ) ) + ( step ) ) <= ( len ) );\ TEST_HELPER_ASSERT( (uint32_t)( ( ( p ) - ( start ) ) + ( step ) ) <= ( len ) );\
( p ) += ( step ); \ ( p ) += ( step ); \
} \ } \
while( 0 ) while( 0 )
@ -127,7 +127,7 @@ uint8_t * receive_data( uint32_t * data_len )
/* Read data length */ /* Read data length */
*data_len = receive_uint32(); *data_len = receive_uint32();
data = (uint8_t *)malloc( *data_len ); data = (uint8_t *)malloc( *data_len );
assert( data != NULL ); TEST_HELPER_ASSERT( data != NULL );
greentea_getc(); // read ';' received after key i.e. *data_len greentea_getc(); // read ';' received after key i.e. *data_len
@ -221,7 +221,7 @@ void ** parse_parameters( uint8_t count, uint8_t * data, uint32_t data_len,
hex_count = find_hex_count(count, data, data_len); hex_count = find_hex_count(count, data, data_len);
params = (void **)malloc( sizeof( void *) * ( count + hex_count ) ); params = (void **)malloc( sizeof( void *) * ( count + hex_count ) );
assert( params != NULL ); TEST_HELPER_ASSERT( params != NULL );
cur = params; cur = params;
p = data; p = data;
@ -360,7 +360,7 @@ int execute_tests( int args, const char ** argv )
{ {
/* Read dependency count */ /* Read dependency count */
count = *p; count = *p;
assert( count < data_len ); TEST_HELPER_ASSERT( count < data_len );
INCR_ASSERT( p, data, data_len, sizeof( uint8_t ) ); INCR_ASSERT( p, data, data_len, sizeof( uint8_t ) );
ret = verify_dependencies( count, p ); ret = verify_dependencies( count, p );
if ( ret != DEPENDENCY_SUPPORTED ) if ( ret != DEPENDENCY_SUPPORTED )