diff options
| author | djm <> | 2009-01-05 21:36:39 +0000 |
|---|---|---|
| committer | djm <> | 2009-01-05 21:36:39 +0000 |
| commit | 3be551b5922b665fd4e18cd65b857b9f92a0b6c8 (patch) | |
| tree | e0d2d687fbd4e4e9eb6bc4b178ea069817f0aba4 /src/lib/libcrypto/bn/bn_div.c | |
| parent | 822633f8798a6b4646a8b092e7c67f511cdbdba2 (diff) | |
| download | openbsd-3be551b5922b665fd4e18cd65b857b9f92a0b6c8.tar.gz openbsd-3be551b5922b665fd4e18cd65b857b9f92a0b6c8.tar.bz2 openbsd-3be551b5922b665fd4e18cd65b857b9f92a0b6c8.zip | |
update to openssl-0.9.8i; tested by several, especially krw@
Diffstat (limited to 'src/lib/libcrypto/bn/bn_div.c')
| -rw-r--r-- | src/lib/libcrypto/bn/bn_div.c | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/src/lib/libcrypto/bn/bn_div.c b/src/lib/libcrypto/bn/bn_div.c index 8655eb118e..1e8e57626b 100644 --- a/src/lib/libcrypto/bn/bn_div.c +++ b/src/lib/libcrypto/bn/bn_div.c | |||
| @@ -187,6 +187,17 @@ int BN_div(BIGNUM *dv, BIGNUM *rm, const BIGNUM *num, const BIGNUM *divisor, | |||
| 187 | BN_ULONG d0,d1; | 187 | BN_ULONG d0,d1; |
| 188 | int num_n,div_n; | 188 | int num_n,div_n; |
| 189 | 189 | ||
| 190 | /* Invalid zero-padding would have particularly bad consequences | ||
| 191 | * in the case of 'num', so don't just rely on bn_check_top() for this one | ||
| 192 | * (bn_check_top() works only for BN_DEBUG builds) */ | ||
| 193 | if (num->top > 0 && num->d[num->top - 1] == 0) | ||
| 194 | { | ||
| 195 | BNerr(BN_F_BN_DIV,BN_R_NOT_INITIALIZED); | ||
| 196 | return 0; | ||
| 197 | } | ||
| 198 | |||
| 199 | bn_check_top(num); | ||
| 200 | |||
| 190 | if ((BN_get_flags(num, BN_FLG_CONSTTIME) != 0) || (BN_get_flags(divisor, BN_FLG_CONSTTIME) != 0)) | 201 | if ((BN_get_flags(num, BN_FLG_CONSTTIME) != 0) || (BN_get_flags(divisor, BN_FLG_CONSTTIME) != 0)) |
| 191 | { | 202 | { |
| 192 | return BN_div_no_branch(dv, rm, num, divisor, ctx); | 203 | return BN_div_no_branch(dv, rm, num, divisor, ctx); |
| @@ -194,7 +205,7 @@ int BN_div(BIGNUM *dv, BIGNUM *rm, const BIGNUM *num, const BIGNUM *divisor, | |||
| 194 | 205 | ||
| 195 | bn_check_top(dv); | 206 | bn_check_top(dv); |
| 196 | bn_check_top(rm); | 207 | bn_check_top(rm); |
| 197 | bn_check_top(num); | 208 | /* bn_check_top(num); */ /* 'num' has been checked already */ |
| 198 | bn_check_top(divisor); | 209 | bn_check_top(divisor); |
| 199 | 210 | ||
| 200 | if (BN_is_zero(divisor)) | 211 | if (BN_is_zero(divisor)) |
| @@ -419,7 +430,7 @@ static int BN_div_no_branch(BIGNUM *dv, BIGNUM *rm, const BIGNUM *num, | |||
| 419 | 430 | ||
| 420 | bn_check_top(dv); | 431 | bn_check_top(dv); |
| 421 | bn_check_top(rm); | 432 | bn_check_top(rm); |
| 422 | bn_check_top(num); | 433 | /* bn_check_top(num); */ /* 'num' has been checked in BN_div() */ |
| 423 | bn_check_top(divisor); | 434 | bn_check_top(divisor); |
| 424 | 435 | ||
| 425 | if (BN_is_zero(divisor)) | 436 | if (BN_is_zero(divisor)) |
