提交 4584ecce 编写于 作者: B Bodo Möller

another thread-safety fix

上级 ed3ecd80
...@@ -481,6 +481,7 @@ BN_MONT_CTX *BN_MONT_CTX_set_locked(BN_MONT_CTX **pmont, int lock, ...@@ -481,6 +481,7 @@ BN_MONT_CTX *BN_MONT_CTX_set_locked(BN_MONT_CTX **pmont, int lock,
const BIGNUM *mod, BN_CTX *ctx) const BIGNUM *mod, BN_CTX *ctx)
{ {
int got_write_lock = 0; int got_write_lock = 0;
BN_MONT_CTX *ret;
CRYPTO_r_lock(lock); CRYPTO_r_lock(lock);
if (!*pmont) if (!*pmont)
...@@ -491,19 +492,20 @@ BN_MONT_CTX *BN_MONT_CTX_set_locked(BN_MONT_CTX **pmont, int lock, ...@@ -491,19 +492,20 @@ BN_MONT_CTX *BN_MONT_CTX_set_locked(BN_MONT_CTX **pmont, int lock,
if (!*pmont) if (!*pmont)
{ {
BN_MONT_CTX *mtmp; ret = BN_MONT_CTX_new();
mtmp = BN_MONT_CTX_new(); if (ret && !BN_MONT_CTX_set(ret, mod, ctx))
if (mtmp && !BN_MONT_CTX_set(mtmp, mod, ctx)) BN_MONT_CTX_free(ret);
BN_MONT_CTX_free(mtmp);
else else
*pmont = mtmp; *pmont = ret;
} }
} }
ret = *pmont;
if (got_write_lock) if (got_write_lock)
CRYPTO_w_unlock(lock); CRYPTO_w_unlock(lock);
else else
CRYPTO_r_unlock(lock); CRYPTO_r_unlock(lock);
return *pmont; return ret;
} }
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册