diff options
author | FdaSilvaYY <fdasilvayy@gmail.com> | 2016-03-01 21:59:48 +0100 |
---|---|---|
committer | Rich Salz <rsalz@akamai.com> | 2016-03-03 19:47:01 -0500 |
commit | 0b2fc9286f84d12f2f103b0d29c9e6e1e2a6bf87 (patch) | |
tree | 4cf88480ad2081b0588ec486e1a9d7f7ae53b4d0 | |
parent | e257b2c2aeeb010693ae79458751a030a7961b84 (diff) | |
download | openssl-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.c | 4 | ||||
-rw-r--r-- | crypto/threads_win.c | 4 |
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; } |