diff options
author | Dr. Stephen Henson <steve@openssl.org> | 2005-11-11 12:59:39 +0000 |
---|---|---|
committer | Dr. Stephen Henson <steve@openssl.org> | 2005-11-11 12:59:39 +0000 |
commit | 8860f3a82acb0fad6cdeafb5eca9ca22b5b232e0 (patch) | |
tree | d759a393dc822e88d9d26be57c9b1147c8a467da /crypto | |
parent | 43e9f4ca2f5a45832a96e5252858dd9b739eef94 (diff) |
Fix possible race condition.
Diffstat (limited to 'crypto')
-rw-r--r-- | crypto/bn/bn_mont.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/crypto/bn/bn_mont.c b/crypto/bn/bn_mont.c index 82af91f90d..42376dae6b 100644 --- a/crypto/bn/bn_mont.c +++ b/crypto/bn/bn_mont.c @@ -358,12 +358,12 @@ BN_MONT_CTX *BN_MONT_CTX_set_locked(BN_MONT_CTX **pmont, int lock, CRYPTO_w_lock(lock); if (!*pmont) { - *pmont = BN_MONT_CTX_new(); - if (*pmont && !BN_MONT_CTX_set(*pmont, mod, ctx)) - { - BN_MONT_CTX_free(*pmont); - *pmont = NULL; - } + BN_MONT_CTX *mtmp; + mtmp = BN_MONT_CTX_new(); + if (mtmp && !BN_MONT_CTX_set(mtmp, mod, ctx)) + BN_MONT_CTX_free(mtmp); + else + *pmont = mtmp; } CRYPTO_w_unlock(lock); return *pmont; |