X-Git-Url: https://git.distorted.org.uk/~mdw/sgt/putty/blobdiff_plain/551a4acb84abdf14340214d90188e33e8c657b6f..4d9b8cfde347c30066cdcf1002fb6d4b02bdc808:/sshbn.c diff --git a/sshbn.c b/sshbn.c index cbd710d5..a5e0552f 100644 --- 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);