forked from espressif/esp-idf
Merge branch 'bugfix/check_return_values_in_ssl_handshake' into 'master'
fix(mbedtls): Check return values of md functions during ssl handshake Closes IDF-10478 See merge request espressif/esp-idf!32298
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* SPDX-FileCopyrightText: 2020-2022 Espressif Systems (Shanghai) CO LTD
|
* SPDX-FileCopyrightText: 2020-2024 Espressif Systems (Shanghai) CO LTD
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: Apache-2.0
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
*/
|
*/
|
||||||
@@ -56,23 +56,35 @@ static int ssl_update_checksum_start( mbedtls_ssl_context *ssl,
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void ssl_handshake_params_init( mbedtls_ssl_handshake_params *handshake )
|
static int ssl_handshake_params_init( mbedtls_ssl_handshake_params *handshake )
|
||||||
{
|
{
|
||||||
memset( handshake, 0, sizeof( mbedtls_ssl_handshake_params ) );
|
memset( handshake, 0, sizeof( mbedtls_ssl_handshake_params ) );
|
||||||
|
|
||||||
#if defined(MBEDTLS_SHA256_C)
|
#if defined(MBEDTLS_SHA256_C)
|
||||||
mbedtls_md_init( &handshake->fin_sha256 );
|
mbedtls_md_init( &handshake->fin_sha256 );
|
||||||
mbedtls_md_setup( &handshake->fin_sha256,
|
int ret = mbedtls_md_setup( &handshake->fin_sha256,
|
||||||
mbedtls_md_info_from_type(MBEDTLS_MD_SHA256),
|
mbedtls_md_info_from_type(MBEDTLS_MD_SHA256),
|
||||||
0 );
|
0 );
|
||||||
mbedtls_md_starts( &handshake->fin_sha256 );
|
if (ret != 0) {
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
ret = mbedtls_md_starts( &handshake->fin_sha256 );
|
||||||
|
if (ret != 0) {
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
#if defined(MBEDTLS_SHA512_C)
|
#if defined(MBEDTLS_SHA512_C)
|
||||||
mbedtls_md_init( &handshake->fin_sha384 );
|
mbedtls_md_init( &handshake->fin_sha384 );
|
||||||
mbedtls_md_setup( &handshake->fin_sha384,
|
ret = mbedtls_md_setup( &handshake->fin_sha384,
|
||||||
mbedtls_md_info_from_type(MBEDTLS_MD_SHA384),
|
mbedtls_md_info_from_type(MBEDTLS_MD_SHA384),
|
||||||
0 );
|
0 );
|
||||||
mbedtls_md_starts( &handshake->fin_sha384 );
|
if (ret != 0) {
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
ret = mbedtls_md_starts( &handshake->fin_sha384 );
|
||||||
|
if (ret != 0) {
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
handshake->update_checksum = ssl_update_checksum_start;
|
handshake->update_checksum = ssl_update_checksum_start;
|
||||||
@@ -103,6 +115,8 @@ static void ssl_handshake_params_init( mbedtls_ssl_handshake_params *handshake )
|
|||||||
!defined(MBEDTLS_SSL_KEEP_PEER_CERTIFICATE)
|
!defined(MBEDTLS_SSL_KEEP_PEER_CERTIFICATE)
|
||||||
mbedtls_pk_init( &handshake->peer_pubkey );
|
mbedtls_pk_init( &handshake->peer_pubkey );
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int ssl_handshake_init( mbedtls_ssl_context *ssl )
|
static int ssl_handshake_init( mbedtls_ssl_context *ssl )
|
||||||
@@ -161,7 +175,10 @@ static int ssl_handshake_init( mbedtls_ssl_context *ssl )
|
|||||||
/* Initialize structures */
|
/* Initialize structures */
|
||||||
mbedtls_ssl_session_init( ssl->session_negotiate );
|
mbedtls_ssl_session_init( ssl->session_negotiate );
|
||||||
mbedtls_ssl_transform_init( ssl->transform_negotiate );
|
mbedtls_ssl_transform_init( ssl->transform_negotiate );
|
||||||
ssl_handshake_params_init( ssl->handshake );
|
int ret = ssl_handshake_params_init( ssl->handshake );
|
||||||
|
if (ret != 0) {
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* curve_list is translated to IANA TLS group identifiers here because
|
* curve_list is translated to IANA TLS group identifiers here because
|
||||||
|
Reference in New Issue
Block a user