'entropy >= ENTROPY_NEEDED' should be evaluated while the variables are locked.
diff --git a/crypto/rand/md_rand.c b/crypto/rand/md_rand.c index 79e3484..da4258c 100644 --- a/crypto/rand/md_rand.c +++ b/crypto/rand/md_rand.c
@@ -559,14 +559,17 @@ static int ssleay_rand_status(void) { + int ret; + CRYPTO_w_lock(CRYPTO_LOCK_RAND); if (!initialized) ssleay_rand_initialize(); + ret = entropy >= ENTROPY_NEEDED; CRYPTO_w_unlock(CRYPTO_LOCK_RAND); - return (entropy >= ENTROPY_NEEDED); + return ret; } #ifdef WINDOWS