diff options
author | Rich Salz <rsalz@openssl.org> | 2016-09-05 18:08:43 -0400 |
---|---|---|
committer | Rich Salz <rsalz@openssl.org> | 2016-09-06 10:42:01 -0400 |
commit | 01c09f9fde5793e0b3712d602b02e2aed4908e8d (patch) | |
tree | 8dffd9ac9fd1f8525fe8c7bcc81ba636108fe242 /crypto/bn/bn_lib.c | |
parent | 77a42b5f177e308233ab108806c48b9590a780e2 (diff) |
Misc BN fixes
Never output -0; make "negative zero" an impossibility.
Do better checking on BN_rand top/bottom requirements and #bits.
Update doc.
Ignoring trailing garbage in BN_asc2bn.
Port this commit from boringSSL: https://boringssl.googlesource.com/boringssl/+/899b9b19a4cd3fe526aaf5047ab9234cdca19f7d%5E!/
Ensure |BN_div| never gives negative zero in the no_branch code.
Have |bn_correct_top| fix |bn->neg| if the input is zero so that we
don't have negative zeros lying around.
Thanks to Brian Smith for noticing.
Reviewed-by: Richard Levitte <levitte@openssl.org>
Diffstat (limited to 'crypto/bn/bn_lib.c')
-rw-r--r-- | crypto/bn/bn_lib.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/crypto/bn/bn_lib.c b/crypto/bn/bn_lib.c index 0be42f8350..17d34c319e 100644 --- a/crypto/bn/bn_lib.c +++ b/crypto/bn/bn_lib.c @@ -1031,5 +1031,7 @@ void bn_correct_top(BIGNUM *a) } a->top = tmp_top; } + if (a->top == 0) + a->neg = 0; bn_pollute(a); } |