If n0 == d0, we must alway compute 'rem' "by hand"
authorBodo Möller <bodo@openssl.org>
Tue, 1 Feb 2000 11:10:54 +0000 (11:10 +0000)
committerBodo Möller <bodo@openssl.org>
Tue, 1 Feb 2000 11:10:54 +0000 (11:10 +0000)
crypto/bn/bn_div.c

index 928773af1c9e1edc1a883b2b880e9f8d7749c4ec..f15eced0cfa0fea8fb83e731b6ee1351b88ac60c 100644 (file)
@@ -235,8 +235,13 @@ int BN_div(BIGNUM *dv, BIGNUM *rm, const BIGNUM *num, const BIGNUM *divisor,
                n0=wnump[0];
                n1=wnump[-1];
                if (n0 == d0)
+                       {
                        q=BN_MASK2;
-               else
+#ifdef REMAINDER_IS_ALREADY_CALCULATED /* in this case it isn't */
+                       rem=(n1-q*d0)&BN_MASK2;
+#endif
+                       }
+               else /* n0 < d0 */
 #if defined(BN_LLONG) && defined(BN_DIV2W) && !defined(bn_div_words)
                        q=(BN_ULONG)(((((BN_ULLONG)n0)<<BN_BITS2)|n1)/d0);
 #else