diff -urN coreutils-8.24/lib/vasnprintf.c coreutils-8.24-patched/lib/vasnprintf.c --- coreutils-8.24/lib/vasnprintf.c 2015-06-16 15:04:34.000000000 +1000 +++ coreutils-8.24-patched/lib/vasnprintf.c 2019-08-28 20:59:06.000772714 +1000 @@ -849,7 +849,9 @@ size_t a_len = a.nlimbs; /* 0.03345 is slightly larger than log(2)/(9*log(10)). */ size_t c_len = 9 * ((size_t)(a_len * (GMP_LIMB_BITS * 0.03345f)) + 1); - char *c_ptr = (char *) malloc (xsum (c_len, extra_zeroes)); + /* We need extra_zeroes bytes for zeroes, followed by c_len bytes for the + digits of a, followed by 1 byte for the terminating NUL. */ + char *c_ptr = (char *) malloc (xsum (xsum (extra_zeroes, c_len), 1)); if (c_ptr != NULL) { char *d_ptr = c_ptr;