diff options
author | Andrew Burgess <aburgess@broadcom.com> | 2013-07-16 21:12:14 +0000 |
---|---|---|
committer | Andrew Burgess <aburgess@broadcom.com> | 2013-07-16 21:12:14 +0000 |
commit | 5ea5559b9aab3618955d6d38934828e9d5749bea (patch) | |
tree | 9aa1ffc18e57611494e73af7b6685a96860667de /gdb/common | |
parent | 2c57100624571d93ebc965bed32b7d517a382e02 (diff) | |
download | gdb-5ea5559b9aab3618955d6d38934828e9d5749bea.zip gdb-5ea5559b9aab3618955d6d38934828e9d5749bea.tar.gz gdb-5ea5559b9aab3618955d6d38934828e9d5749bea.tar.bz2 |
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.
Diffstat (limited to 'gdb/common')
-rw-r--r-- | gdb/common/format.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/gdb/common/format.c b/gdb/common/format.c index 5803818..1bdd253 100644 --- a/gdb/common/format.c +++ b/gdb/common/format.c @@ -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++; } |