diff options
-rw-r--r-- | ChangeLog | 4 | ||||
-rw-r--r-- | bignum.c | 4 |
2 files changed, 6 insertions, 2 deletions
@@ -1,3 +1,7 @@ +Tue Jul 9 01:17:57 2013 Tanaka Akira <akr@fsij.org> + + * bignum.c (bigrsh_bang): Fix bignum digits overrun. + Tue Jul 9 00:46:22 2013 Tanaka Akira <akr@fsij.org> * bignum.c (biglsh_bang): Fix bignum digits under-run. @@ -4452,11 +4452,11 @@ bigrsh_bang(BDIGIT* xds, long xn, unsigned long shift) i = 0; zds = xds + s1; num = *zds++>>s2; - do { + while (i < xn - s1 - 1) { xds[i++] = BIGLO(*zds<<s3) | num; num = *zds++>>s2; } - while (i < xn - s1 - 1); + assert(i < xn); xds[i] = num; MEMZERO(xds + xn - s1, BDIGIT, s1); } |