aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFdaSilvaYY <fdasilvayy@gmail.com>2016-03-01 21:59:48 +0100
committerRich Salz <rsalz@akamai.com>2016-03-03 19:47:01 -0500
commit0b2fc9286f84d12f2f103b0d29c9e6e1e2a6bf87 (patch)
tree4cf88480ad2081b0588ec486e1a9d7f7ae53b4d0
parente257b2c2aeeb010693ae79458751a030a7961b84 (diff)
downloadopenssl-0b2fc9286f84d12f2f103b0d29c9e6e1e2a6bf87.tar.gz
GH773: Possible leak on CRYPTO_THREAD_lock_new failure
Signed-off-by: Rich Salz <rsalz@akamai.com> Reviewed-by: Matt Caswell <matt@openssl.org>
-rw-r--r--crypto/threads_pthread.c4
-rw-r--r--crypto/threads_win.c4
2 files changed, 6 insertions, 2 deletions
diff --git a/crypto/threads_pthread.c b/crypto/threads_pthread.c
index 2b32e142ae..edca77c0b9 100644
--- a/crypto/threads_pthread.c
+++ b/crypto/threads_pthread.c
@@ -58,8 +58,10 @@ CRYPTO_RWLOCK *CRYPTO_THREAD_lock_new(void)
if (lock == NULL)
return NULL;
- if (pthread_rwlock_init(lock, NULL) != 0)
+ if (pthread_rwlock_init(lock, NULL) != 0) {
+ OPENSSL_free(lock);
return NULL;
+ }
return lock;
}
diff --git a/crypto/threads_win.c b/crypto/threads_win.c
index bee628ff81..741e8f827e 100644
--- a/crypto/threads_win.c
+++ b/crypto/threads_win.c
@@ -59,8 +59,10 @@ CRYPTO_RWLOCK *CRYPTO_THREAD_lock_new(void)
return NULL;
/* 0x400 is the spin count value suggested in the documentation */
- if (!InitializeCriticalSectionAndSpinCount(lock, 0x400))
+ if (!InitializeCriticalSectionAndSpinCount(lock, 0x400)) {
+ OPENSSL_free(lock);
return NULL;
+ }
return lock;
}