There's a slight possibility that a is 0 in BN_sub_word(), and might
authorRichard Levitte <levitte@openssl.org>
Thu, 27 Jul 2000 21:32:23 +0000 (21:32 +0000)
committerRichard Levitte <levitte@openssl.org>
Thu, 27 Jul 2000 21:32:23 +0000 (21:32 +0000)
therefore have unallocated parts.  Therefore, a check for the 0 case
is needed, resulting with the same thing as when a is negative.

crypto/bn/bn_word.c

index 7e7ca58842bb92dbd732924a05d247d7aa8f6682..f3bdde969cc376a9344b9d58c6d8c6a97766bcd6 100644 (file)
@@ -140,7 +140,7 @@ int BN_sub_word(BIGNUM *a, BN_ULONG w)
        {
        int i;
 
-       if (a->neg)
+       if (BN_is_zero(a) || a->neg)
                {
                a->neg=0;
                i=BN_add_word(a,w);