PK: Fix free(NULL) in library and tests

free() functions are documented as no-ops on NULL. Implement and test
this correctly.
This commit is contained in:
Gilles Peskine 2018-12-19 14:18:39 +01:00
parent e146e7dbae
commit 1f19fa6f62
2 changed files with 7 additions and 4 deletions

View File

@ -90,8 +90,7 @@ void mbedtls_pk_restart_init( mbedtls_pk_restart_ctx *ctx )
*/ */
void mbedtls_pk_restart_free( mbedtls_pk_restart_ctx *ctx ) void mbedtls_pk_restart_free( mbedtls_pk_restart_ctx *ctx )
{ {
PK_VALIDATE( ctx != NULL ); if( ctx == NULL || ctx->pk_info == NULL ||
if( ctx->pk_info == NULL ||
ctx->pk_info->rs_free_func == NULL ) ctx->pk_info->rs_free_func == NULL )
{ {
return; return;

View File

@ -77,6 +77,12 @@ void valid_parameters( )
mbedtls_pk_init( &pk ); mbedtls_pk_init( &pk );
TEST_VALID_PARAM( mbedtls_pk_free( NULL ) );
#if defined(MBEDTLS_ECDSA_C) && defined(MBEDTLS_ECP_RESTARTABLE)
TEST_VALID_PARAM( mbedtls_pk_restart_free( NULL ) );
#endif
TEST_ASSERT( mbedtls_pk_setup( &pk, NULL ) == TEST_ASSERT( mbedtls_pk_setup( &pk, NULL ) ==
MBEDTLS_ERR_PK_BAD_INPUT_DATA ); MBEDTLS_ERR_PK_BAD_INPUT_DATA );
@ -133,8 +139,6 @@ void invalid_parameters( )
#if defined(MBEDTLS_ECDSA_C) && defined(MBEDTLS_ECP_RESTARTABLE) #if defined(MBEDTLS_ECDSA_C) && defined(MBEDTLS_ECP_RESTARTABLE)
TEST_INVALID_PARAM( mbedtls_pk_restart_init( NULL ) ); TEST_INVALID_PARAM( mbedtls_pk_restart_init( NULL ) );
TEST_INVALID_PARAM( mbedtls_pk_restart_free( NULL ) );
#endif #endif
TEST_INVALID_PARAM_RET( MBEDTLS_ERR_PK_BAD_INPUT_DATA, TEST_INVALID_PARAM_RET( MBEDTLS_ERR_PK_BAD_INPUT_DATA,