summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBruno Haible <bruno@clisp.org>2021-03-30 11:44:30 +0900
committerJinWang An <jinwang.an@samsung.com>2021-03-30 11:51:14 +0900
commite12519bbf320b2cdf49ccb95f01e6debcac3660a (patch)
tree59c74b8a1dfc8ed269ee72ae190d902c623599ad
parentaf7e46e444fe3abfd1b9b6a0054d6ad201adc209 (diff)
downloadcpio-accepted/tizen_6.0_base_tool.tar.gz
cpio-accepted/tizen_6.0_base_tool.tar.bz2
cpio-accepted/tizen_6.0_base_tool.zip
Reported by Ben Pfaff <blp@cs.stanford.edu> in <https://lists.gnu.org/archive/html/bug-gnulib/2018-09/msg00107.html>. * lib/vasnprintf.c (convert_to_decimal): Allocate one more byte of memory. * tests/test-vasnprintf.c (test_function): Add another test. Change-Id: I06fab298f8c383605db52742959e60822f7f143e Signed-off-by: JinWang An <jinwang.an@samsung.com>
-rw-r--r--gnu/vasnprintf.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/gnu/vasnprintf.c b/gnu/vasnprintf.c
index 3fbba53..35d3129 100644
--- a/gnu/vasnprintf.c
+++ b/gnu/vasnprintf.c
@@ -808,7 +808,9 @@ convert_to_decimal (mpn_t a, size_t extra_zeroes)
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;