Merge branch 'iotssl-825-double-free-quickfix'

Conflicts:
	ChangeLog
This commit is contained in:
Simon Butcher 2016-10-11 00:07:14 +01:00
commit df6c3e8e48
2 changed files with 5 additions and 2 deletions

View File

@ -34,6 +34,8 @@ Bugfix
* Fixed the sample applications gen_key.c, cert_req.c and cert_write.c for
builds where the configuration MBEDTLS_PEM_WRITE_C is not defined. Found
by inestlerode. #559.
* Fixed default threading implementation to avoid accidental double
initialisations and double frees.
Changes
* Extended test coverage of special cases, and added new timing test suite.

View File

@ -32,7 +32,7 @@
#if defined(MBEDTLS_THREADING_PTHREAD)
static void threading_mutex_init_pthread( mbedtls_threading_mutex_t *mutex )
{
if( mutex == NULL )
if( mutex == NULL || mutex->is_valid )
return;
mutex->is_valid = pthread_mutex_init( &mutex->mutex, NULL ) == 0;
@ -40,10 +40,11 @@ static void threading_mutex_init_pthread( mbedtls_threading_mutex_t *mutex )
static void threading_mutex_free_pthread( mbedtls_threading_mutex_t *mutex )
{
if( mutex == NULL )
if( mutex == NULL || !mutex->is_valid )
return;
(void) pthread_mutex_destroy( &mutex->mutex );
mutex->is_valid = 0;
}
static int threading_mutex_lock_pthread( mbedtls_threading_mutex_t *mutex )