mirror of
https://github.com/tobast/libunwind-eh_elf.git
synced 2024-11-25 00:27:39 +01:00
68a2910bae
Due to a bug in the gold linker[1], the .eh_frame and .eh_frame_hdr sections contains garbage. When dwarf_extract_proc_info_from_fde tried to look up the begin of the CIE subsection, it would underflow the .eh_frame segment, resulting in a crash[2]. This patch avoids that crash by checking whether the CIE pointer is located after the begin of the .eh_frame section. The variable "base" was misused in various places as a boolean (decode as .debug_frame or decode as .eh_frame). These instances have been renamed to is_debug_frame where applicable. Tested on Linux x86_64. [1]: https://sourceware.org/bugzilla/show_bug.cgi?id=17639 [2]: http://lists.nongnu.org/archive/html/libunwind-devel/2014-11/msg00009.html Signed-off-by: Peter Wu <peter@lekensteyn.nl> |
||
---|---|---|
.. | ||
tdep | ||
tdep-aarch64 | ||
tdep-arm | ||
tdep-hppa | ||
tdep-ia64 | ||
tdep-mips | ||
tdep-ppc32 | ||
tdep-ppc64 | ||
tdep-sh | ||
tdep-tilegx | ||
tdep-x86 | ||
tdep-x86_64 | ||
x86 | ||
compiler.h | ||
dwarf-eh.h | ||
dwarf.h | ||
dwarf_i.h | ||
libunwind-aarch64.h | ||
libunwind-arm.h | ||
libunwind-common.h.in | ||
libunwind-coredump.h | ||
libunwind-dynamic.h | ||
libunwind-hppa.h | ||
libunwind-ia64.h | ||
libunwind-mips.h | ||
libunwind-ppc32.h | ||
libunwind-ppc64.h | ||
libunwind-ptrace.h | ||
libunwind-sh.h | ||
libunwind-tilegx.h | ||
libunwind-x86.h | ||
libunwind-x86_64.h | ||
libunwind.h.in | ||
libunwind_i.h | ||
mempool.h | ||
remote.h | ||
unwind.h |