diff options
Diffstat (limited to 'debian/patches/pr21157.diff')
-rw-r--r-- | debian/patches/pr21157.diff | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/debian/patches/pr21157.diff b/debian/patches/pr21157.diff new file mode 100644 index 0000000..a592fc9 --- /dev/null +++ b/debian/patches/pr21157.diff @@ -0,0 +1,60 @@ +# DP: Fix PR binutils/21157, handling of corrupt STABS enum type strings. + +From a2dea0b20bc66a4c287c3c50002b8c3b3e9d953a Mon Sep 17 00:00:00 2001 +From: Nick Clifton <nickc@redhat.com> +Date: Tue, 14 Feb 2017 14:07:29 +0000 +Subject: [PATCH] Fix handling of corrupt STABS enum type strings. + + PR binutils/21157 + * stabs.c (parse_stab_enum_type): Check for corrupt NAME:VALUE + pairs. + (parse_number): Exit early if passed an empty string. +--- + binutils/ChangeLog | 7 +++++++ + binutils/stabs.c | 14 +++++++++++++- + 2 files changed, 20 insertions(+), 1 deletion(-) + +2017-02-14 Nick Clifton <nickc@redhat.com> + + PR binutils/21157 + * stabs.c (parse_stab_enum_type): Check for corrupt NAME:VALUE + pairs. + (parse_number): Exit early if passed an empty string. + +diff --git a/binutils/stabs.c b/binutils/stabs.c +index d3fc4af..3861f83 100644 +--- a/binutils/stabs.c ++++ b/binutils/stabs.c +@@ -232,6 +232,10 @@ parse_number (const char **pp, bfd_boolean *poverflow) + + orig = *pp; + ++ /* Stop early if we are passed an empty string. */ ++ if (*orig == 0) ++ return (bfd_vma) 0; ++ + errno = 0; + ul = strtoul (*pp, (char **) pp, 0); + if (ul + 1 != 0 || errno == 0) +@@ -1975,9 +1979,17 @@ parse_stab_enum_type (void *dhandle, const char **pp) + bfd_signed_vma val; + + p = *pp; +- while (*p != ':') ++ while (*p != ':' && *p != 0) + ++p; + ++ if (*p == 0) ++ { ++ bad_stab (orig); ++ free (names); ++ free (values); ++ return DEBUG_TYPE_NULL; ++ } ++ + name = savestring (*pp, p - *pp); + + *pp = p + 1; +-- +2.9.3 + |