From 13e4c87ff60b74b4401e4d6fa33823da5125f15a Mon Sep 17 00:00:00 2001 From: Jim Meyering Date: Tue, 20 Mar 2007 15:21:08 +0100 Subject: [PATCH] Fix a typo in the handling of %x and %X. * vasnprintf.c (VASNPRINTF): When adding 2 to buffer length, don't double it. --- lib/ChangeLog | 6 ++++++ lib/vasnprintf.c | 5 +++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/lib/ChangeLog b/lib/ChangeLog index 49c0e93..e1b4c7a 100644 --- a/lib/ChangeLog +++ b/lib/ChangeLog @@ -1,3 +1,9 @@ +2007-03-20 Jim Meyering + + Fix a typo in the handling of %x and %X. + * vasnprintf.c (VASNPRINTF): When adding 2 to buffer length, + don't double it. + 2007-03-04 Jim Meyering * vasnprintf.c (VASNPRINTF): Add missing semicolon. diff --git a/lib/vasnprintf.c b/lib/vasnprintf.c index 8be7ac4..8a9ec9e 100644 --- a/lib/vasnprintf.c +++ b/lib/vasnprintf.c @@ -415,8 +415,9 @@ VASNPRINTF (CHAR_T *resultbuf, size_t *lengthp, const CHAR_T *format, va_list ar if (tmp_length < precision) tmp_length = precision; /* Add 2, to account for a leading sign or alternate form. */ - if (tmp_length <= SIZE_MAX / 2) - tmp_length *= 2; + tmp_length += 2; + if (tmp_length < 2) + goto out_of_memory; break; case 'f': case 'F': -- 2.7.4