mirror of
https://github.com/yuzu-emu/mbedtls.git
synced 2024-10-18 18:21:07 +00:00
Fix possible client crash on API misuse
This commit is contained in:
parent
14d800507a
commit
7f2f062a5d
|
@ -6,6 +6,11 @@ Features
|
||||||
* Added support for yotta as a build system.
|
* Added support for yotta as a build system.
|
||||||
* Primary open source license changed to Apache 2.0 license.
|
* Primary open source license changed to Apache 2.0 license.
|
||||||
|
|
||||||
|
Security
|
||||||
|
* Fix possible client-side NULL pointer dereference (read) when the client
|
||||||
|
tries to continue the handshake after it failed (a misuse of the API).
|
||||||
|
(Found by GDS Labs using afl-fuzz, patch provided by GDS Labs.)
|
||||||
|
|
||||||
Bugfix
|
Bugfix
|
||||||
* Fix segfault in the benchmark program when benchmarking DHM.
|
* Fix segfault in the benchmark program when benchmarking DHM.
|
||||||
* Fix build error with CMake and pre-4.5 versions of GCC (found by Hugo
|
* Fix build error with CMake and pre-4.5 versions of GCC (found by Hugo
|
||||||
|
|
|
@ -1771,6 +1771,12 @@ static int ssl_write_encrypted_pms( mbedtls_ssl_context *ssl,
|
||||||
|
|
||||||
ssl->handshake->pmslen = 48;
|
ssl->handshake->pmslen = 48;
|
||||||
|
|
||||||
|
if( ssl->session_negotiate->peer_cert == NULL )
|
||||||
|
{
|
||||||
|
MBEDTLS_SSL_DEBUG_MSG( 2, ( "certificate required" ) );
|
||||||
|
return( MBEDTLS_ERR_SSL_UNEXPECTED_MESSAGE );
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Now write it out, encrypted
|
* Now write it out, encrypted
|
||||||
*/
|
*/
|
||||||
|
@ -1873,6 +1879,12 @@ static int ssl_get_ecdh_params_from_cert( mbedtls_ssl_context *ssl )
|
||||||
int ret;
|
int ret;
|
||||||
const mbedtls_ecp_keypair *peer_key;
|
const mbedtls_ecp_keypair *peer_key;
|
||||||
|
|
||||||
|
if( ssl->session_negotiate->peer_cert == NULL )
|
||||||
|
{
|
||||||
|
MBEDTLS_SSL_DEBUG_MSG( 2, ( "certificate required" ) );
|
||||||
|
return( MBEDTLS_ERR_SSL_UNEXPECTED_MESSAGE );
|
||||||
|
}
|
||||||
|
|
||||||
if( ! mbedtls_pk_can_do( &ssl->session_negotiate->peer_cert->pk,
|
if( ! mbedtls_pk_can_do( &ssl->session_negotiate->peer_cert->pk,
|
||||||
MBEDTLS_PK_ECKEY ) )
|
MBEDTLS_PK_ECKEY ) )
|
||||||
{
|
{
|
||||||
|
@ -2182,6 +2194,12 @@ static int ssl_parse_server_key_exchange( mbedtls_ssl_context *ssl )
|
||||||
MBEDTLS_SSL_DEBUG_BUF( 3, "parameters hash", hash, hashlen != 0 ? hashlen :
|
MBEDTLS_SSL_DEBUG_BUF( 3, "parameters hash", hash, hashlen != 0 ? hashlen :
|
||||||
(unsigned int) ( mbedtls_md_get_size( mbedtls_md_info_from_type( md_alg ) ) ) );
|
(unsigned int) ( mbedtls_md_get_size( mbedtls_md_info_from_type( md_alg ) ) ) );
|
||||||
|
|
||||||
|
if( ssl->session_negotiate->peer_cert == NULL )
|
||||||
|
{
|
||||||
|
MBEDTLS_SSL_DEBUG_MSG( 2, ( "certificate required" ) );
|
||||||
|
return( MBEDTLS_ERR_SSL_UNEXPECTED_MESSAGE );
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Verify signature
|
* Verify signature
|
||||||
*/
|
*/
|
||||||
|
|
Loading…
Reference in a new issue