diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/lib/libcrypto/bn/bn_div.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/src/lib/libcrypto/bn/bn_div.c b/src/lib/libcrypto/bn/bn_div.c index 7ada277402..686b957eb5 100644 --- a/src/lib/libcrypto/bn/bn_div.c +++ b/src/lib/libcrypto/bn/bn_div.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: bn_div.c,v 1.37 2023/02/13 04:25:37 jsing Exp $ */ | 1 | /* $OpenBSD: bn_div.c,v 1.38 2023/02/14 18:19:27 jsing Exp $ */ |
2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
3 | * All rights reserved. | 3 | * All rights reserved. |
4 | * | 4 | * |
@@ -237,7 +237,7 @@ static int | |||
237 | BN_div_internal(BIGNUM *quotient, BIGNUM *remainder, const BIGNUM *numerator, | 237 | BN_div_internal(BIGNUM *quotient, BIGNUM *remainder, const BIGNUM *numerator, |
238 | const BIGNUM *divisor, BN_CTX *ctx, int ct) | 238 | const BIGNUM *divisor, BN_CTX *ctx, int ct) |
239 | { | 239 | { |
240 | int norm_shift, i, loop; | 240 | int norm_shift, i, loop, r_neg; |
241 | BIGNUM *tmp, wnum, *snum, *sdiv, *res; | 241 | BIGNUM *tmp, wnum, *snum, *sdiv, *res; |
242 | BN_ULONG *resp, *wnump; | 242 | BN_ULONG *resp, *wnump; |
243 | BN_ULONG d0, d1; | 243 | BN_ULONG d0, d1; |
@@ -341,7 +341,7 @@ BN_div_internal(BIGNUM *quotient, BIGNUM *remainder, const BIGNUM *numerator, | |||
341 | if (!bn_wexpand(res, (loop + 1))) | 341 | if (!bn_wexpand(res, (loop + 1))) |
342 | goto err; | 342 | goto err; |
343 | res->top = loop - no_branch; | 343 | res->top = loop - no_branch; |
344 | BN_set_negative(res, numerator->neg ^ divisor->neg); | 344 | r_neg = numerator->neg ^ divisor->neg; |
345 | resp = &(res->d[loop - 1]); | 345 | resp = &(res->d[loop - 1]); |
346 | 346 | ||
347 | /* space for temp */ | 347 | /* space for temp */ |
@@ -420,6 +420,8 @@ BN_div_internal(BIGNUM *quotient, BIGNUM *remainder, const BIGNUM *numerator, | |||
420 | if (no_branch) | 420 | if (no_branch) |
421 | bn_correct_top(res); | 421 | bn_correct_top(res); |
422 | 422 | ||
423 | BN_set_negative(res, r_neg); | ||
424 | |||
423 | done: | 425 | done: |
424 | ret = 1; | 426 | ret = 1; |
425 | err: | 427 | err: |