From 9b562d5c3671354d61193c285eaf5e50d62d64e4 Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Wed, 25 Apr 2018 20:32:43 +0200 Subject: [PATCH] mbedtls_ssl_handshake_free: take the SSL context as argument Change the signature of mbedtls_ssl_handshake_free again. Now take the whole SSL context as argument and not just the configuration and the handshake substructure. This is in preparation for changing the asynchronous cancel callback to take the SSL context as an argument. --- include/mbedtls/ssl_internal.h | 6 ++---- library/ssl_tls.c | 18 +++++++++--------- 2 files changed, 11 insertions(+), 13 deletions(-) diff --git a/include/mbedtls/ssl_internal.h b/include/mbedtls/ssl_internal.h index 4c7205d70..334b5d852 100644 --- a/include/mbedtls/ssl_internal.h +++ b/include/mbedtls/ssl_internal.h @@ -414,11 +414,9 @@ void mbedtls_ssl_transform_free( mbedtls_ssl_transform *transform ); * \brief Free referenced items in an SSL handshake context and clear * memory * - * \param conf SSL configuration - * \param handshake SSL handshake context + * \param ssl SSL context */ -void mbedtls_ssl_handshake_free( const mbedtls_ssl_config *conf, - mbedtls_ssl_handshake_params *handshake ); +void mbedtls_ssl_handshake_free( mbedtls_ssl_context *ssl ); int mbedtls_ssl_handshake_client_step( mbedtls_ssl_context *ssl ); int mbedtls_ssl_handshake_server_step( mbedtls_ssl_context *ssl ); diff --git a/library/ssl_tls.c b/library/ssl_tls.c index f5d332fa8..aa48b4538 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -5201,7 +5201,7 @@ static void ssl_handshake_wrapup_free_hs_transform( mbedtls_ssl_context *ssl ) /* * Free our handshake params */ - mbedtls_ssl_handshake_free( ssl->conf, ssl->handshake ); + mbedtls_ssl_handshake_free( ssl ); mbedtls_free( ssl->handshake ); ssl->handshake = NULL; @@ -5556,7 +5556,7 @@ static int ssl_handshake_init( mbedtls_ssl_context *ssl ) if( ssl->session_negotiate ) mbedtls_ssl_session_free( ssl->session_negotiate ); if( ssl->handshake ) - mbedtls_ssl_handshake_free( ssl->conf, ssl->handshake ); + mbedtls_ssl_handshake_free( ssl ); /* * Either the pointers are now NULL or cleared properly and can be freed. @@ -7426,12 +7426,12 @@ static void ssl_key_cert_free( mbedtls_ssl_key_cert *key_cert ) } #endif /* MBEDTLS_X509_CRT_PARSE_C */ -void mbedtls_ssl_handshake_free( const mbedtls_ssl_config *conf, - mbedtls_ssl_handshake_params *handshake ) +void mbedtls_ssl_handshake_free( mbedtls_ssl_context *ssl ) { + mbedtls_ssl_handshake_params *handshake = ssl->handshake; + if( handshake == NULL ) return; - (void) conf; /* Unused in some compile-time configurations. */ #if defined(MBEDTLS_SSL_PROTO_SSL3) || defined(MBEDTLS_SSL_PROTO_TLS1) || \ defined(MBEDTLS_SSL_PROTO_TLS1_1) @@ -7496,11 +7496,11 @@ void mbedtls_ssl_handshake_free( const mbedtls_ssl_config *conf, #endif /* MBEDTLS_X509_CRT_PARSE_C && MBEDTLS_SSL_SERVER_NAME_INDICATION */ #if defined(MBEDTLS_SSL_ASYNC_PRIVATE) - if( conf->f_async_cancel != NULL && + if( ssl->conf->f_async_cancel != NULL && handshake->p_async_operation_ctx != NULL ) { - conf->f_async_cancel( conf->p_async_connection_ctx, - handshake->p_async_operation_ctx ); + ssl->conf->f_async_cancel( ssl->conf->p_async_connection_ctx, + handshake->p_async_operation_ctx ); } #endif /* MBEDTLS_SSL_ASYNC_PRIVATE */ @@ -7571,7 +7571,7 @@ void mbedtls_ssl_free( mbedtls_ssl_context *ssl ) if( ssl->handshake ) { - mbedtls_ssl_handshake_free( ssl->conf, ssl->handshake ); + mbedtls_ssl_handshake_free( ssl ); mbedtls_ssl_transform_free( ssl->transform_negotiate ); mbedtls_ssl_session_free( ssl->session_negotiate );