Check for NULL character before calling strchr.

http://sourceware.org/ml/gdb-patches/2013-07/msg00322.html

gdb/ChangeLog

        * common/format.c (parse_format_string): Add checks for NULL
        character before calling strchr.

gdb/testsuite/ChangeLog

        * gdb.base/printcmds.exp (test_printf): Add tests for format
        strings with missing format specifier.
This commit is contained in:
Andrew Burgess
2013-07-16 21:12:14 +00:00
parent 2c57100624
commit 5ea5559b9a
4 changed files with 19 additions and 3 deletions

View File

@ -156,7 +156,7 @@ parse_format_string (const char **arg)
/* The first part of a format specifier is a set of flag
characters. */
while (strchr ("0-+ #", *f))
while (*f != '\0' && strchr ("0-+ #", *f))
{
if (*f == '#')
seen_hash = 1;
@ -170,7 +170,7 @@ parse_format_string (const char **arg)
}
/* The next part of a format specifier is a width. */
while (strchr ("0123456789", *f))
while (*f != '\0' && strchr ("0123456789", *f))
f++;
/* The next part of a format specifier is a precision. */
@ -178,7 +178,7 @@ parse_format_string (const char **arg)
{
seen_prec = 1;
f++;
while (strchr ("0123456789", *f))
while (*f != '\0' && strchr ("0123456789", *f))
f++;
}