From: Emeric Brun Date: Wed, 26 Jul 2017 13:59:21 +0000 (+0200) Subject: Fix async engine pause dead lock in error case. X-Git-Tag: OpenSSL_1_1_0g~123 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=a4110310ea6879622516294b9fc7ef6e2f815c1c;p=openssl Fix async engine pause dead lock in error case. In 'crypto/rand/ossl_rand.c', a call to 'ASYNC_unblock_pause()' is missing in an error case. CLA: trivial Reviewed-by: Rich Salz Reviewed-by: Ben Kaduk (cherry picked from commit e4b16013e9b3d19241d3ba0bb0875f0d70d93509) (Merged from https://github.com/openssl/openssl/pull/4024) --- diff --git a/crypto/rand/md_rand.c b/crypto/rand/md_rand.c index 85ce4e6f98..fee722abf7 100644 --- a/crypto/rand/md_rand.c +++ b/crypto/rand/md_rand.c @@ -492,6 +492,7 @@ static int rand_bytes(unsigned char *buf, int num, int pseudo) */ ASYNC_block_pause(); if (!MD_Update(m, md, MD_DIGEST_LENGTH) || !MD_Final(m, md)) { + ASYNC_unblock_pause(); CRYPTO_THREAD_unlock(rand_lock); goto err; }