Fix async engine pause dead lock in error case.
authorEmeric Brun <ebrun@haproxy.com>
Wed, 26 Jul 2017 13:59:21 +0000 (15:59 +0200)
committerBenjamin Kaduk <kaduk@mit.edu>
Wed, 26 Jul 2017 16:43:39 +0000 (11:43 -0500)
In 'crypto/rand/ossl_rand.c', a call to
'ASYNC_unblock_pause()' is missing in an error case.

CLA: trivial

Reviewed-by: Rich Salz <rsalz@openssl.org>
Reviewed-by: Ben Kaduk <kaduk@mit.edu>
(Merged from https://github.com/openssl/openssl/pull/4020)

crypto/rand/ossl_rand.c

index 1b4b21ba4a370973a3f28bc844e2e3ceef7e318a..119c2b423ac05a1ce1bb011d5869ad948113c3d5 100644 (file)
@@ -485,6 +485,7 @@ static int rand_bytes(unsigned char *buf, int num)
     ASYNC_block_pause();
     if (!EVP_DigestUpdate(m, sp->md, sizeof(sp->md))
             || !EVP_DigestFinal_ex(m, sp->md, NULL)) {
+        ASYNC_unblock_pause();
         CRYPTO_THREAD_unlock(rand_lock);
         goto err;
     }