mirror of
https://github.com/espressif/esp-idf.git
synced 2025-08-04 21:24:32 +02:00
mbedtls: Prevent bounds check bypass through overflow in PSK identity parsing
This is a patch for CVE-2017-18187.
Cherry-picked from 83c9f495ff
Ref. https://github.com/espressif/esp-idf/issues/1730
This commit is contained in:
@@ -3436,7 +3436,7 @@ static int ssl_parse_client_psk_identity( mbedtls_ssl_context *ssl, unsigned cha
|
|||||||
/*
|
/*
|
||||||
* Receive client pre-shared key identity name
|
* Receive client pre-shared key identity name
|
||||||
*/
|
*/
|
||||||
if( *p + 2 > end )
|
if( end - *p < 2 )
|
||||||
{
|
{
|
||||||
MBEDTLS_SSL_DEBUG_MSG( 1, ( "bad client key exchange message" ) );
|
MBEDTLS_SSL_DEBUG_MSG( 1, ( "bad client key exchange message" ) );
|
||||||
return( MBEDTLS_ERR_SSL_BAD_HS_CLIENT_KEY_EXCHANGE );
|
return( MBEDTLS_ERR_SSL_BAD_HS_CLIENT_KEY_EXCHANGE );
|
||||||
@@ -3445,7 +3445,7 @@ static int ssl_parse_client_psk_identity( mbedtls_ssl_context *ssl, unsigned cha
|
|||||||
n = ( (*p)[0] << 8 ) | (*p)[1];
|
n = ( (*p)[0] << 8 ) | (*p)[1];
|
||||||
*p += 2;
|
*p += 2;
|
||||||
|
|
||||||
if( n < 1 || n > 65535 || *p + n > end )
|
if( n < 1 || n > 65535 || n > (size_t) ( end - *p ) )
|
||||||
{
|
{
|
||||||
MBEDTLS_SSL_DEBUG_MSG( 1, ( "bad client key exchange message" ) );
|
MBEDTLS_SSL_DEBUG_MSG( 1, ( "bad client key exchange message" ) );
|
||||||
return( MBEDTLS_ERR_SSL_BAD_HS_CLIENT_KEY_EXCHANGE );
|
return( MBEDTLS_ERR_SSL_BAD_HS_CLIENT_KEY_EXCHANGE );
|
||||||
|
Reference in New Issue
Block a user