Fix potential memory leaks

This commit is contained in:
Manuel Pégourié-Gonnard 2015-08-12 11:17:55 +02:00
parent b1b250b68c
commit 4f2cd95e1d

View File

@ -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 );