libunwind: update to 1.2

Addresses CVE-2015-3239: Off-by-one error in the dwarf_to_unw_regnum
function in include/dwarf_i.h in libunwind 1.1 allows local users to
have unspecified impact via invalid dwarf opcodes.

Upstream stable-v1.2 fixed the missing unwind_i.h issue but no new
tarball is released yet

Signed-off-by: Yousong Zhou <yszhou4tech@gmail.com>
(cherry picked from commit 5d48dc1146)
This commit is contained in:
Yousong Zhou 2017-05-22 10:35:10 +08:00 committed by Jo-Philipp Wich
parent e5612d6640
commit 444b64f533
3 changed files with 58 additions and 19 deletions

View File

@ -1,5 +1,6 @@
#
# Copyright (C) 2008-2013 OpenWrt.org
# Copyright (C) 2017 Yousong Zhou <yszhou4tech@gmail.com>
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
@ -8,12 +9,12 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=libunwind
PKG_VERSION:=1.1
PKG_VERSION:=1.2
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=@SAVANNAH/$(PKG_NAME)
PKG_HASH:=9dfe0fcae2a866de9d3942c66995e4b460230446887dbdab302d41a8aee8d09a
PKG_HASH:=1de38ffbdc88bd694d10081865871cd2bfbb02ad8ef9e1606aee18d65532b992
PKG_FIXUP:=autoreconf
PKG_INSTALL:=1
@ -36,7 +37,10 @@ define Package/libunwind/description
Libunwind defines a portable and efficient C programming interface (API) to determine the call-chain of a program.
endef
CONFIGURE_ARGS += --enable-minidebuginfo=no
CONFIGURE_ARGS += \
--disable-documentation \
--enable-minidebuginfo=no \
define Package/libunwind/install
$(INSTALL_DIR) $(1)/usr/lib

View File

@ -1,22 +1,11 @@
--- a/Makefile.am
+++ b/Makefile.am
@@ -36,7 +36,7 @@
@@ -42,7 +42,7 @@ endif
nodist_include_HEADERS = include/libunwind-common.h
-SUBDIRS = src tests doc
+SUBDIRS = src doc
-SUBDIRS = src tests
+SUBDIRS = src
noinst_HEADERS = include/dwarf.h include/dwarf_i.h include/dwarf-eh.h \
include/compiler.h include/libunwind_i.h include/mempool.h \
--- a/Makefile.in
+++ b/Makefile.in
@@ -313,7 +313,7 @@
$(am__append_7) $(am__append_8) $(am__append_9) \
$(am__append_10)
nodist_include_HEADERS = include/libunwind-common.h
-SUBDIRS = src tests doc
+SUBDIRS = src doc
noinst_HEADERS = include/dwarf.h include/dwarf_i.h include/dwarf-eh.h \
include/compiler.h include/libunwind_i.h include/mempool.h \
include/remote.h \
if CONFIG_DOCS
SUBDIRS += doc

View File

@ -0,0 +1,46 @@
--- /dev/null 2017-05-16 16:52:50.220000000 +0800
+++ b/src/mips/unwind_i.h 2016-06-13 11:43:06.310153501 +0800
@@ -0,0 +1,43 @@
+/* libunwind - a platform-independent unwind library
+ Copyright (C) 2008 CodeSourcery
+
+This file is part of libunwind.
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
+
+#ifndef unwind_i_h
+#define unwind_i_h
+
+#include <stdint.h>
+
+#include <libunwind-mips.h>
+
+#include "libunwind_i.h"
+
+#define mips_lock UNW_OBJ(lock)
+#define mips_local_resume UNW_OBJ(local_resume)
+#define mips_local_addr_space_init UNW_OBJ(local_addr_space_init)
+
+extern int mips_local_resume (unw_addr_space_t as, unw_cursor_t *cursor,
+ void *arg);
+
+extern void mips_local_addr_space_init (void);
+
+#endif /* unwind_i_h */