Darrel Hankerson <dhankers@cacr.math.uwaterloo.ca> correctly discovered
authorRichard Levitte <levitte@openssl.org>
Wed, 26 Jul 2000 01:14:16 +0000 (01:14 +0000)
committerRichard Levitte <levitte@openssl.org>
Wed, 26 Jul 2000 01:14:16 +0000 (01:14 +0000)
that of the result pointer to bn_mul was the same as one of the two arguments,
That argument might have it's sign destroyed.  He provided this fix.

crypto/bn/bn_mul.c

index 3e8baaad9a05b0530f427b49ea444854a75f8bcb..3e8d8b9567a89af94383b8e6120a78cb060a55a5 100644 (file)
@@ -631,7 +631,6 @@ int BN_mul(BIGNUM *r, BIGNUM *a, BIGNUM *b, BN_CTX *ctx)
 
        al=a->top;
        bl=b->top;
-       r->neg=a->neg^b->neg;
 
        if ((al == 0) || (bl == 0))
                {
@@ -647,6 +646,7 @@ int BN_mul(BIGNUM *r, BIGNUM *a, BIGNUM *b, BN_CTX *ctx)
                }
        else
                rr = r;
+       rr->neg=a->neg^b->neg;
 
 #if defined(BN_MUL_COMBA) || defined(BN_RECURSION)
        i = al-bl;