X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=crypto%2Fbn%2Fbn_div.c;h=2857f44861a702bfc85e380e99db562a7c07ec13;hb=07645deeb8cc203951c1794a0fde54af8f877393;hp=2f464b31d1131b5493807a0c23a361587b6b0606;hpb=9e989810bade356f3edd599d5b62d159795f2d53;p=oweals%2Fopenssl.git diff --git a/crypto/bn/bn_div.c b/crypto/bn/bn_div.c index 2f464b31d1..2857f44861 100644 --- a/crypto/bn/bn_div.c +++ b/crypto/bn/bn_div.c @@ -185,10 +185,8 @@ int BN_div(BIGNUM *dv, BIGNUM *rm, const BIGNUM *num, const BIGNUM *divisor, BN_ULONG d0,d1; int num_n,div_n; - if (dv) - bn_check_top(dv); - if (rm) - bn_check_top(rm); + bn_check_top(dv); + bn_check_top(rm); bn_check_top(num); bn_check_top(divisor); @@ -214,7 +212,6 @@ int BN_div(BIGNUM *dv, BIGNUM *rm, const BIGNUM *num, const BIGNUM *divisor, res=BN_CTX_get(ctx); else res=dv; if (sdiv == NULL || res == NULL) goto err; - tmp->neg=0; /* First we normalise the numbers */ norm_shift=BN_BITS2-((BN_num_bits(divisor))%BN_BITS2); @@ -232,10 +229,8 @@ int BN_div(BIGNUM *dv, BIGNUM *rm, const BIGNUM *num, const BIGNUM *divisor, wnum.neg = 0; wnum.d = &(snum->d[loop]); wnum.top = div_n; -#ifdef BN_DEBUG_RAND /* only needed when BN_ucmp messes up the values between top and max */ wnum.dmax = snum->dmax - loop; /* so we don't step out of bounds */ -#endif /* Get the top 2 words of sdiv */ /* div_n=sdiv->top; */ @@ -256,12 +251,10 @@ int BN_div(BIGNUM *dv, BIGNUM *rm, const BIGNUM *num, const BIGNUM *divisor, if (BN_ucmp(&wnum,sdiv) >= 0) { -#ifdef BN_DEBUG_RAND /* If BN_DEBUG_RAND is defined BN_ucmp changes (via * bn_pollute) the const bignum arguments => * clean the values between top and max again */ bn_clear_top2max(&wnum); -#endif bn_sub_words(wnum.d, wnum.d, sdiv->d, div_n); *resp=1; } @@ -384,13 +377,13 @@ X) -> 0x%08X\n", /* store part of the result */ *resp = q; } + bn_correct_top(snum); if (rm != NULL) { /* Keep a copy of the neg flag in num because if rm==num * BN_rshift() will overwrite it. */ int neg = num->neg; - bn_correct_top(snum); BN_rshift(rm,snum,norm_shift); if (!BN_is_zero(rm)) rm->neg = neg; @@ -399,8 +392,7 @@ X) -> 0x%08X\n", BN_CTX_end(ctx); return(1); err: - if (rm) - bn_check_top(rm); + bn_check_top(rm); BN_CTX_end(ctx); return(0); }