From 3baa5e8e788bd1819dc0d3c50e5c6dd82016aa38 Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Mon, 5 May 2014 18:55:08 +0000
Subject: elfutils: update to 0.158

---
 abs/core/elfutils/CVE-2014-0172.patch              | 37 ++++++++++++++++++
 abs/core/elfutils/PKGBUILD                         | 45 ++++++++++++++--------
 .../fix-run-backtrace-native-core-test.patch       | 43 +++++++++++++++++++++
 3 files changed, 110 insertions(+), 15 deletions(-)
 create mode 100644 abs/core/elfutils/CVE-2014-0172.patch
 create mode 100644 abs/core/elfutils/fix-run-backtrace-native-core-test.patch

diff --git a/abs/core/elfutils/CVE-2014-0172.patch b/abs/core/elfutils/CVE-2014-0172.patch
new file mode 100644
index 0000000..5f9541d
--- /dev/null
+++ b/abs/core/elfutils/CVE-2014-0172.patch
@@ -0,0 +1,37 @@
+From 7f1eec317db79627b473c5b149a22a1b20d1f68f Mon Sep 17 00:00:00 2001
+From: Mark Wielaard <mjw@redhat.com>
+Date: Wed, 9 Apr 2014 11:33:23 +0200
+Subject: [PATCH] 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
+@@ -1,5 +1,5 @@
+ /* Create descriptor from ELF descriptor for processing file.
+-   Copyright (C) 2002-2011 Red Hat, Inc.
++   Copyright (C) 2002-2011, 2014 Red Hat, Inc.
+    This file is part of elfutils.
+    Written by Ulrich Drepper <drepper@redhat.com>, 2002.
+ 
+@@ -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;
+-- 
+1.9.2
+
diff --git a/abs/core/elfutils/PKGBUILD b/abs/core/elfutils/PKGBUILD
index 8cbee1e..6a7485d 100644
--- a/abs/core/elfutils/PKGBUILD
+++ b/abs/core/elfutils/PKGBUILD
@@ -1,11 +1,11 @@
-# $Id: PKGBUILD 163718 2012-07-18 03:05:26Z eric $
-# Maintainer: 
+# $Id$
+# Maintainer: Stéphane Gaudreault <stephane@archlinux.org>
 # Contributor: Andrej Gelenberg <andrej.gelenberg@udo.edu>
 
 pkgname=elfutils
-pkgver=0.154
-pkgrel=1
-pkgdesc="Collection of libraries and utilities for working with ELF object files and DWARF debugging information"
+pkgver=0.158
+pkgrel=2
+pkgdesc="Libraries and utilities to handle ELF object files and DWARF debugging information"
 arch=('i686' 'x86_64')
 url="https://fedorahosted.org/elfutils/"
 license=('LGPL3' 'GPL' 'GPL3')
@@ -13,27 +13,42 @@ depends=('gcc-libs' 'zlib' 'bzip2' 'xz')
 provides=('libelf')
 replaces=('libelf')
 conflicts=('libelf')
-options=('!makeflags')
-source=(https://fedorahosted.org/releases/e/l/elfutils/${pkgver}/elfutils-${pkgver}.tar.bz2{,.sig} \
-        elfutils-0.154-binutils-pr-ld-13621.patch)
-sha1sums=('3a92a6f636cc3d14d4b3b00ba5c1e88a2a8d510b'
-          '956461d44b03823e0b448e78b1f4aa25ef269e1e'
-          '09681b728edb86c77eed47286554bef048f3507f')
+source=(https://fedorahosted.org/releases/e/l/elfutils/${pkgver}/elfutils-${pkgver}.tar.bz2{,.sig}
+        fix-run-backtrace-native-core-test.patch
+	CVE-2014-0172.patch)
+options=('staticlibs')
+sha1sums=('09adbbf0f3a35bb1bcb77c2eaa40de8d3443af4d'
+          'SKIP'
+          '8ecef640f3d1229cdf45ffda016a69848c18e61b'
+          '3e776c07d6ca2c7604a384d266f79c3ece1fb179')
+
+prepare() {
+  cd ${pkgname}-${pkgver}
+
+  patch -Np1 -i ../fix-run-backtrace-native-core-test.patch
+  # merged upstream
+  patch -Np1 -i ../CVE-2014-0172.patch
+}
 
 build() {
-  cd "${srcdir}/${pkgname}-${pkgver}"
+  cd ${pkgname}-${pkgver}
+
   CFLAGS+=" -g"  # required for test-suite success
-  patch -p1 -i "${srcdir}/elfutils-0.154-binutils-pr-ld-13621.patch"
   ./configure --prefix=/usr --program-prefix="eu-"
+
   make
 }
 
 check() {
-  cd "${srcdir}/${pkgname}-${pkgver}"
+  cd ${pkgname}-${pkgver}
+
   make check
 }
 
 package() {
-  cd "${srcdir}/${pkgname}-${pkgver}"
+  cd ${pkgname}-${pkgver}
+
   make DESTDIR="${pkgdir}" install
+  
+  rm "${pkgdir}"/usr/lib/lib{asm,dw,elf}.a
 }
diff --git a/abs/core/elfutils/fix-run-backtrace-native-core-test.patch b/abs/core/elfutils/fix-run-backtrace-native-core-test.patch
new file mode 100644
index 0000000..5088ea5
--- /dev/null
+++ b/abs/core/elfutils/fix-run-backtrace-native-core-test.patch
@@ -0,0 +1,43 @@
+From e922ec4e3bcd7c164a9ce424accac4394e7d5afd Mon Sep 17 00:00:00 2001
+From: Matthias Klose <doko@ubuntu.com>
+Date: Tue, 07 Jan 2014 09:25:29 +0000
+Subject: tests: backtrace-subr.sh (check_native_core) should check core file name.
+
+Needed when /proc/sys/kernel/core_uses_pid is set to 0. Try to rename
+the core file, and if it does still fail, skip the test.
+
+Signed-off-by: Mark Wielaard <mjw@redhat.com>
+---
+diff --git a/tests/ChangeLog b/tests/ChangeLog
+index 63b7bed..7e9dcf4 100644
+--- a/tests/ChangeLog
++++ b/tests/ChangeLog
+@@ -1,3 +1,9 @@
++2014-01-07  Matthias Klose <doko@ubuntu.com>
++
++	* backtrace-subr.sh (check_native_core): Check to see if core file
++	was created without ".PID" extension, if so mv core to core.PID.
++	Skip test if no core file was created or could be found.
++
+ 2014-01-04  Mark Wielaard  <mjw@redhat.com>
+ 
+ 	* backtrace-data.c (main): Don't assert if raise returns.
+diff --git a/tests/backtrace-subr.sh b/tests/backtrace-subr.sh
+index e7ece91..62b873c 100644
+--- a/tests/backtrace-subr.sh
++++ b/tests/backtrace-subr.sh
+@@ -111,6 +111,11 @@ check_native_core()
+ 
+   # Skip the test if we cannot adjust core ulimit.
+   core="core.`ulimit -c unlimited || exit 77; set +ex; testrun ${abs_builddir}/$child --gencore; true`"
++  # see if /proc/sys/kernel/core_uses_pid is set to 0
++  if [ -f core ]; then
++    mv core "$core"
++  fi
++  if [ ! -f "$core" ]; then exit 77; fi
+ 
+   if [ "x$SAVED_VALGRIND_CMD" != "x" ]; then
+     VALGRIND_CMD="$SAVED_VALGRIND_CMD"
+--
+cgit v0.9.2
+
-- 
cgit v0.12

