f3e07263 |
diff --git a/elfutils-0.158-CVE-2014-0172.patch b/elfutils-0.158-CVE-2014-0172.patch
new file mode 100644
index 0000000..3b76360
--- /dev/null
+++ b/elfutils-0.158-CVE-2014-0172.patch
@@ -0,0 +1,28 @@
+commit 7f1eec317db79627b473c5b149a22a1b20d1f68f
+Author: Mark Wielaard <mjw@redhat.com>
+Date: Wed Apr 9 11:33:23 2014 +0200
+
+ CVE-2014-0172 Check for overflow before calling malloc to uncompress data.
+
+ https://bugzilla.redhat.com/show_bug.cgi?id=1085663
+
+ Reported-by: Florian Weimer <fweimer@redhat.com>
+ Signed-off-by: Mark Wielaard <mjw@redhat.com>
+
+diff --git a/libdw/dwarf_begin_elf.c b/libdw/dwarf_begin_elf.c
+index 79daeac..34ea373 100644
+--- a/libdw/dwarf_begin_elf.c
++++ b/libdw/dwarf_begin_elf.c
+@@ -282,6 +282,12 @@ check_section (Dwarf *result, GElf_Ehdr *ehdr, Elf_Scn *scn, bool inscngrp)
+ memcpy (&size, data->d_buf + 4, sizeof size);
+ size = be64toh (size);
+
++ /* Check for unsigned overflow so malloc always allocated
++ enough memory for both the Elf_Data header and the
++ uncompressed section data. */
++ if (unlikely (sizeof (Elf_Data) + size < size))
++ break;
++
+ Elf_Data *zdata = malloc (sizeof (Elf_Data) + size);
+ if (unlikely (zdata == NULL))
+ break; |