提交 e42395e6 编写于 作者: A Andy Polyakov

bn/bn_lib.c: remove bn_check_top from bn_expand2.

Trouble is that addition is postponing expansion till carry is
calculated, and if addition carries, top word can be zero, which
triggers assertion in bn_check_top.
Reviewed-by: NRich Salz <rsalz@openssl.org>
Reviewed-by: NDavid Benjamin <davidben@google.com>
(Merged from https://github.com/openssl/openssl/pull/6662)
上级 7da84e0f
...@@ -209,8 +209,6 @@ static BN_ULONG *bn_expand_internal(const BIGNUM *b, int words) ...@@ -209,8 +209,6 @@ static BN_ULONG *bn_expand_internal(const BIGNUM *b, int words)
{ {
BN_ULONG *a = NULL; BN_ULONG *a = NULL;
bn_check_top(b);
if (words > (INT_MAX / (4 * BN_BITS2))) { if (words > (INT_MAX / (4 * BN_BITS2))) {
BNerr(BN_F_BN_EXPAND_INTERNAL, BN_R_BIGNUM_TOO_LONG); BNerr(BN_F_BN_EXPAND_INTERNAL, BN_R_BIGNUM_TOO_LONG);
return NULL; return NULL;
...@@ -245,8 +243,6 @@ static BN_ULONG *bn_expand_internal(const BIGNUM *b, int words) ...@@ -245,8 +243,6 @@ static BN_ULONG *bn_expand_internal(const BIGNUM *b, int words)
BIGNUM *bn_expand2(BIGNUM *b, int words) BIGNUM *bn_expand2(BIGNUM *b, int words)
{ {
bn_check_top(b);
if (words > b->dmax) { if (words > b->dmax) {
BN_ULONG *a = bn_expand_internal(b, words); BN_ULONG *a = bn_expand_internal(b, words);
if (!a) if (!a)
...@@ -259,7 +255,6 @@ BIGNUM *bn_expand2(BIGNUM *b, int words) ...@@ -259,7 +255,6 @@ BIGNUM *bn_expand2(BIGNUM *b, int words)
b->dmax = words; b->dmax = words;
} }
bn_check_top(b);
return b; return b;
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册