Resource leak fix on windows platform
Fix a resource leak on windows platform, in mbedtls_x509_crt_parse_path, in case a failure. when an error occurs, goto cleanup, and free the resource, instead of returning error code immediately.
This commit is contained in:
parent
85bdcf8c16
commit
eba5dabc61
2 changed files with 8 additions and 1 deletions
|
@ -8,6 +8,9 @@ Bugfix
|
||||||
* Replace preproccessor condition from #if defined(MBEDTLS_THREADING_PTHREAD)
|
* Replace preproccessor condition from #if defined(MBEDTLS_THREADING_PTHREAD)
|
||||||
to #if defined(MBEDTLS_THREADING_C) as the library cannot assume they will
|
to #if defined(MBEDTLS_THREADING_C) as the library cannot assume they will
|
||||||
always be implemented by pthread support. Fix for #696
|
always be implemented by pthread support. Fix for #696
|
||||||
|
* Fix resource leak on windows platform, in mbedtls_x509_crt_parse_path.
|
||||||
|
In case of failure, when an error occures, goto cleanup.
|
||||||
|
Found by redplait #590
|
||||||
|
|
||||||
Changes
|
Changes
|
||||||
* Removed mutexes from ECP hardware accelerator code. Now all hardware
|
* Removed mutexes from ECP hardware accelerator code. Now all hardware
|
||||||
|
|
|
@ -1146,7 +1146,10 @@ int mbedtls_x509_crt_parse_path( mbedtls_x509_crt *chain, const char *path )
|
||||||
p, (int) len - 1,
|
p, (int) len - 1,
|
||||||
NULL, NULL );
|
NULL, NULL );
|
||||||
if( w_ret == 0 )
|
if( w_ret == 0 )
|
||||||
return( MBEDTLS_ERR_X509_FILE_IO_ERROR );
|
{
|
||||||
|
ret = MBEDTLS_ERR_X509_FILE_IO_ERROR;
|
||||||
|
goto cleanup;
|
||||||
|
}
|
||||||
|
|
||||||
w_ret = mbedtls_x509_crt_parse_file( chain, filename );
|
w_ret = mbedtls_x509_crt_parse_file( chain, filename );
|
||||||
if( w_ret < 0 )
|
if( w_ret < 0 )
|
||||||
|
@ -1159,6 +1162,7 @@ int mbedtls_x509_crt_parse_path( mbedtls_x509_crt *chain, const char *path )
|
||||||
if( GetLastError() != ERROR_NO_MORE_FILES )
|
if( GetLastError() != ERROR_NO_MORE_FILES )
|
||||||
ret = MBEDTLS_ERR_X509_FILE_IO_ERROR;
|
ret = MBEDTLS_ERR_X509_FILE_IO_ERROR;
|
||||||
|
|
||||||
|
cleanup:
|
||||||
FindClose( hFind );
|
FindClose( hFind );
|
||||||
#else /* _WIN32 */
|
#else /* _WIN32 */
|
||||||
int t_ret;
|
int t_ret;
|
||||||
|
|
Loading…
Reference in a new issue