mirror of
https://github.com/yuzu-emu/mbedtls
synced 2024-11-24 18:28:37 +00:00
Fix potential memory leaks
This commit is contained in:
parent
b1b250b68c
commit
4f2cd95e1d
1 changed files with 16 additions and 4 deletions
|
@ -160,7 +160,10 @@ static int ecjpake_zkp_write( const mbedtls_md_info_t *md_info,
|
||||||
|
|
||||||
len = mbedtls_mpi_size( &h ); /* actually r */
|
len = mbedtls_mpi_size( &h ); /* actually r */
|
||||||
if( end < *p || (size_t)( end - *p ) < 1 + len || len > 255 )
|
if( end < *p || (size_t)( end - *p ) < 1 + len || len > 255 )
|
||||||
return( MBEDTLS_ERR_ECP_BUFFER_TOO_SMALL );
|
{
|
||||||
|
ret = MBEDTLS_ERR_ECP_BUFFER_TOO_SMALL;
|
||||||
|
goto cleanup;
|
||||||
|
}
|
||||||
|
|
||||||
*(*p)++ = (unsigned char)( len & 0xFF );
|
*(*p)++ = (unsigned char)( len & 0xFF );
|
||||||
MBEDTLS_MPI_CHK( mbedtls_mpi_write_binary( &h, *p, len ) ); /* r */
|
MBEDTLS_MPI_CHK( mbedtls_mpi_write_binary( &h, *p, len ) ); /* r */
|
||||||
|
@ -208,11 +211,17 @@ static int ecjpake_zkp_read( const mbedtls_md_info_t *md_info,
|
||||||
(const unsigned char **) p, end - *p ) );
|
(const unsigned char **) p, end - *p ) );
|
||||||
|
|
||||||
if( end < *p || (size_t)( end - *p ) < 1 )
|
if( end < *p || (size_t)( end - *p ) < 1 )
|
||||||
return( MBEDTLS_ERR_ECP_BAD_INPUT_DATA );
|
{
|
||||||
|
ret = MBEDTLS_ERR_ECP_BAD_INPUT_DATA;
|
||||||
|
goto cleanup;
|
||||||
|
}
|
||||||
|
|
||||||
r_len = *(*p)++;
|
r_len = *(*p)++;
|
||||||
if( end < *p || (size_t)( end - *p ) < r_len )
|
if( end < *p || (size_t)( end - *p ) < r_len )
|
||||||
return( MBEDTLS_ERR_ECP_BAD_INPUT_DATA );
|
{
|
||||||
|
ret = MBEDTLS_ERR_ECP_BAD_INPUT_DATA;
|
||||||
|
goto cleanup;
|
||||||
|
}
|
||||||
|
|
||||||
MBEDTLS_MPI_CHK( mbedtls_mpi_read_binary( &r, *p, r_len ) );
|
MBEDTLS_MPI_CHK( mbedtls_mpi_read_binary( &r, *p, r_len ) );
|
||||||
*p += r_len;
|
*p += r_len;
|
||||||
|
@ -225,7 +234,10 @@ static int ecjpake_zkp_read( const mbedtls_md_info_t *md_info,
|
||||||
&VV, &h, X, &r, G ) );
|
&VV, &h, X, &r, G ) );
|
||||||
|
|
||||||
if( mbedtls_ecp_point_cmp( &VV, &V ) != 0 )
|
if( mbedtls_ecp_point_cmp( &VV, &V ) != 0 )
|
||||||
return( MBEDTLS_ERR_ECP_VERIFY_FAILED );
|
{
|
||||||
|
ret = MBEDTLS_ERR_ECP_VERIFY_FAILED;
|
||||||
|
goto cleanup;
|
||||||
|
}
|
||||||
|
|
||||||
cleanup:
|
cleanup:
|
||||||
mbedtls_ecp_point_free( &V );
|
mbedtls_ecp_point_free( &V );
|
||||||
|
|
Loading…
Reference in a new issue