]> asedeno.scripts.mit.edu Git - PuTTY_svn.git/blobdiff - sshbn.c
It's a new year.
[PuTTY_svn.git] / sshbn.c
diff --git a/sshbn.c b/sshbn.c
index cbd710d5aea4bd68d39a103274166b26af963241..a5e0552ff57523002adbafa6502cb0beda792a97 100644 (file)
--- a/sshbn.c
+++ b/sshbn.c
@@ -607,6 +607,7 @@ static void internal_add_shifted(BignumInt *number,
     addend = (BignumDblInt)n << bshift;
 
     while (addend) {
+        assert(word <= number[0]);
        addend += number[word];
        number[word] = (BignumInt) addend & BIGNUM_INT_MASK;
        addend >>= BIGNUM_INT_BITS;
@@ -1322,6 +1323,12 @@ int bignum_cmp(Bignum a, Bignum b)
     int amax = a[0], bmax = b[0];
     int i;
 
+    /* Annoyingly we have two representations of zero */
+    if (amax == 1 && a[amax] == 0)
+        amax = 0;
+    if (bmax == 1 && b[bmax] == 0)
+        bmax = 0;
+
     assert(amax == 0 || a[amax] != 0);
     assert(bmax == 0 || b[bmax] != 0);