From 9c07473ebccc34c4d0c52e154b1bf3d1e111dae3 Mon Sep 17 00:00:00 2001 From: Jerry Yu Date: Fri, 10 Dec 2021 17:12:43 +0800 Subject: [PATCH] fix various issues Signed-off-by: Jerry Yu --- library/ssl_tls13_keys.c | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/library/ssl_tls13_keys.c b/library/ssl_tls13_keys.c index 88f0fe57fb..6b8f8e146e 100644 --- a/library/ssl_tls13_keys.c +++ b/library/ssl_tls13_keys.c @@ -655,6 +655,8 @@ int mbedtls_ssl_tls13_calculate_verify_data( mbedtls_ssl_context* ssl, size_t transcript_len; unsigned char *base_key = NULL; + mbedtls_ssl_tls13_handshake_secrets *tls13_hs_secrets = + &ssl->handshake->tls13_hs_secrets; mbedtls_md_type_t const md_type = ssl->handshake->ciphersuite_info->mac; const mbedtls_md_info_t* const md_info = @@ -664,7 +666,10 @@ int mbedtls_ssl_tls13_calculate_verify_data( mbedtls_ssl_context* ssl, MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> mbedtls_ssl_tls13_calculate_verify_data" ) ); if( dst_len < md_size ) - return( MBEDTLS_ERR_SSL_BUFFER_TOO_SMALL ); + { + ret = MBEDTLS_ERR_SSL_BUFFER_TOO_SMALL; + goto exit; + } ret = mbedtls_ssl_get_handshake_transcript( ssl, md_type, transcript, sizeof( transcript ), @@ -677,9 +682,9 @@ int mbedtls_ssl_tls13_calculate_verify_data( mbedtls_ssl_context* ssl, MBEDTLS_SSL_DEBUG_BUF( 4, "handshake hash", transcript, transcript_len ); if( from == MBEDTLS_SSL_IS_CLIENT ) - base_key = ssl->handshake->tls13_hs_secrets.client_handshake_traffic_secret; + base_key = tls13_hs_secrets->client_handshake_traffic_secret; else - base_key = ssl->handshake->tls13_hs_secrets.server_handshake_traffic_secret; + base_key = tls13_hs_secrets->server_handshake_traffic_secret; ret = ssl_tls13_calc_finished_core( md_type, base_key, transcript, dst ); if( ret != 0 ) @@ -692,9 +697,15 @@ int mbedtls_ssl_tls13_calculate_verify_data( mbedtls_ssl_context* ssl, exit: /* Erase handshake secrets */ if( from == MBEDTLS_SSL_IS_CLIENT ) - mbedtls_platform_zeroize( base_key, sizeof( ssl->handshake->tls13_hs_secrets.client_handshake_traffic_secret ) ); + { + mbedtls_platform_zeroize( base_key, + sizeof( tls13_hs_secrets->client_handshake_traffic_secret ) ); + } else - mbedtls_platform_zeroize( base_key, sizeof( ssl->handshake->tls13_hs_secrets.server_handshake_traffic_secret ) ); + { + mbedtls_platform_zeroize( base_key, + sizeof( tls13_hs_secrets->server_handshake_traffic_secret ) ); + } mbedtls_platform_zeroize( transcript, sizeof( transcript ) ); return( ret ); }