gnu: libunwind: Add fix for CVE-2015-3239.

* gnu/packages/patches/libunwind-CVE-2015-3239.patch: New file.
* gnu-system.am (dist_patch_DATA): Add it.
* gnu/packages/libunwind.scm (libunwind)[source]: Add patch.
This commit is contained in:
Mark H Weaver 2015-10-08 10:55:04 -04:00
parent f956d661ad
commit b5881775ac
3 changed files with 22 additions and 1 deletions

@ -536,6 +536,7 @@ dist_patch_DATA = \
gnu/packages/patches/libtheora-config-guess.patch \
gnu/packages/patches/libtool-skip-tests2.patch \
gnu/packages/patches/libssh-CVE-2014-0017.patch \
gnu/packages/patches/libunwind-CVE-2015-3239.patch \
gnu/packages/patches/libwmf-CAN-2004-0941.patch \
gnu/packages/patches/libwmf-CVE-2006-3376.patch \
gnu/packages/patches/libwmf-CVE-2007-0455.patch \

@ -1,5 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013, 2014 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
;;;
;;; This file is part of GNU Guix.
;;;
@ -18,6 +19,7 @@
(define-module (gnu packages libunwind)
#:use-module (guix packages)
#:use-module (gnu packages)
#:use-module (guix download)
#:use-module (guix build-system gnu)
#:use-module (guix licenses))
@ -32,7 +34,8 @@
version ".tar.gz"))
(sha256
(base32
"16nhx2pahh9d62mvszc88q226q5lwjankij276fxwrm8wb50zzlx"))))
"16nhx2pahh9d62mvszc88q226q5lwjankij276fxwrm8wb50zzlx"))
(patches (list (search-patch "libunwind-CVE-2015-3239.patch")))))
(build-system gnu-build-system)
(arguments
;; FIXME: As of glibc 2.17, we get 3 out of 34 test failures.

@ -0,0 +1,17 @@
Copied from Fedora.
https://bugzilla.redhat.com/show_bug.cgi?id=1232265
http://pkgs.fedoraproject.org/cgit/libunwind.git/tree/libunwind-1.1-fix-CVE-2015-3239.patch
diff -up libunwind-1.1/include/dwarf_i.h.CVE20153239 libunwind-1.1/include/dwarf_i.h
--- libunwind-1.1/include/dwarf_i.h.CVE20153239 2015-07-10 13:38:36.404996748 -0400
+++ libunwind-1.1/include/dwarf_i.h 2015-07-10 13:39:25.050707613 -0400
@@ -20,7 +20,7 @@
extern const uint8_t dwarf_to_unw_regnum_map[DWARF_REGNUM_MAP_LENGTH];
/* REG is evaluated multiple times; it better be side-effects free! */
# define dwarf_to_unw_regnum(reg) \
- (((reg) <= DWARF_REGNUM_MAP_LENGTH) ? dwarf_to_unw_regnum_map[reg] : 0)
+ (((reg) < DWARF_REGNUM_MAP_LENGTH) ? dwarf_to_unw_regnum_map[reg] : 0)
#endif
#ifdef UNW_LOCAL_ONLY