proper cleanup of openssl locking code
This commit is contained in:
@@ -50,20 +50,23 @@ struct private_openssl_plugin_t {
|
|||||||
/**
|
/**
|
||||||
* Array of static mutexs, with CRYPTO_num_locks() mutex
|
* Array of static mutexs, with CRYPTO_num_locks() mutex
|
||||||
*/
|
*/
|
||||||
static mutex_t **mutex;
|
static mutex_t **mutex = NULL;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Locking callback for static locks
|
* Locking callback for static locks
|
||||||
*/
|
*/
|
||||||
static void locking_function(int mode, int type, const char *file, int line)
|
static void locking_function(int mode, int type, const char *file, int line)
|
||||||
{
|
{
|
||||||
if (mode & CRYPTO_LOCK)
|
if (mutex)
|
||||||
{
|
{
|
||||||
mutex[type]->lock(mutex[type]);
|
if (mode & CRYPTO_LOCK)
|
||||||
}
|
{
|
||||||
else
|
mutex[type]->lock(mutex[type]);
|
||||||
{
|
}
|
||||||
mutex[type]->unlock(mutex[type]);
|
else
|
||||||
|
{
|
||||||
|
mutex[type]->unlock(mutex[type]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -155,6 +158,7 @@ static void threading_cleanup()
|
|||||||
mutex[i]->destroy(mutex[i]);
|
mutex[i]->destroy(mutex[i]);
|
||||||
}
|
}
|
||||||
free(mutex);
|
free(mutex);
|
||||||
|
mutex = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -182,6 +186,8 @@ static void destroy(private_openssl_plugin_t *this)
|
|||||||
ENGINE_cleanup();
|
ENGINE_cleanup();
|
||||||
EVP_cleanup();
|
EVP_cleanup();
|
||||||
|
|
||||||
|
threading_cleanup();
|
||||||
|
|
||||||
free(this);
|
free(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user