summaryrefslogtreecommitdiff
path: root/debian/patches/pr21157.diff
diff options
context:
space:
mode:
Diffstat (limited to 'debian/patches/pr21157.diff')
-rw-r--r--debian/patches/pr21157.diff60
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
+