diff options
author | Bruno Haible <bruno@clisp.org> | 2011-10-15 17:30:44 +0200 |
---|---|---|
committer | Bruno Haible <bruno@clisp.org> | 2011-10-15 17:30:44 +0200 |
commit | 1a1831be04f634375c7e7c56cac7ec2f4167e863 (patch) | |
tree | 097ee8e0c0b6346dc2a6f27d1ba0188d9b8d575c | |
parent | 61e3e44b2a49643c05f0f5c0221d5a2ae3d363fd (diff) | |
download | gettext-1a1831be04f634375c7e7c56cac7ec2f4167e863.tar.gz |
Avoid crash in *printf functions for invalid format string with dollar.
-rw-r--r-- | gettext-runtime/intl/ChangeLog | 8 | ||||
-rw-r--r-- | gettext-runtime/intl/printf.c | 4 |
2 files changed, 12 insertions, 0 deletions
diff --git a/gettext-runtime/intl/ChangeLog b/gettext-runtime/intl/ChangeLog index cb55f3a44..425001559 100644 --- a/gettext-runtime/intl/ChangeLog +++ b/gettext-runtime/intl/ChangeLog @@ -1,5 +1,13 @@ 2011-10-15 Bruno Haible <bruno@clisp.org> + Avoid crash in *printf functions for invalid format string with dollar. + * printf.c (libintl_vsnprintf, libintl_vswprintf): Don't crash in + mempy if libintl_vasnprintf returned NULL. + Reported by Jeong, Heon <bimarket@gmail.com> + in <https://savannah.gnu.org/bugs/?34555>. + +2011-10-15 Bruno Haible <bruno@clisp.org> + vasnprintf: Optimize bit search operation. * vasnprintf.c (divide): Use optimizations from gnulib's integer_length.c. diff --git a/gettext-runtime/intl/printf.c b/gettext-runtime/intl/printf.c index 157853ad4..0369e879e 100644 --- a/gettext-runtime/intl/printf.c +++ b/gettext-runtime/intl/printf.c @@ -213,6 +213,8 @@ libintl_vsnprintf (char *resultbuf, size_t length, const char *format, va_list a { size_t maxlength = length; char *result = libintl_vasnprintf (resultbuf, &length, format, args); + if (result == NULL) + return -1; if (result != resultbuf) { if (maxlength > 0) @@ -388,6 +390,8 @@ libintl_vswprintf (wchar_t *resultbuf, size_t length, const wchar_t *format, va_ { size_t maxlength = length; wchar_t *result = libintl_vasnwprintf (resultbuf, &length, format, args); + if (result == NULL) + return -1; if (result != resultbuf) { if (maxlength > 0) |