platform_system_core/libunwindstack
Christopher Ferris 8726d3a448 Fix handling of possible bad gnu_debugdata_size.
Rather than use a std::vector for backing memory, allocate the memory
using a new with nothrow, and in MemoryBuffer use realloc. Since
the size field is coming from the elf, it could be corrupted or
intentionally crafted to cause problems.

In addition, add some other protections to make sure that overflows
don't occur.

Bug: 146215949

Test: Ran unit tests with jemalloc and scudo to verify that they
Test: both behave the same way.
Change-Id: If14243ce382ba5403a6bacd0ec673452c6b7c3be
2019-12-19 16:48:15 -08:00
..
benchmarks Fix copy / move behaviour of Maps object. 2019-03-05 13:05:36 +00:00
include/unwindstack Use elf offset in signal step check. 2019-12-04 22:29:59 +00:00
tests Fix handling of possible bad gnu_debugdata_size. 2019-12-19 16:48:15 -08:00
tools Fix handling of PT_GNU_EH_FRAME. 2019-10-21 19:11:22 -07:00
.clang-format Use the 2 space clang format for libunwindstack. 2017-03-21 10:41:45 -07:00
Android.bp Use elf offset in signal step check. 2019-12-04 22:29:59 +00:00
AndroidVersions.md Add document of changes between Android versions. 2019-10-15 18:33:11 -07:00
ArmExidx.cpp Fix handling of load bias values. 2018-06-11 18:53:55 -07:00
ArmExidx.h Fix handling of load bias values. 2018-06-11 18:53:55 -07:00
AsmGetRegsMips.S Add libunwindstack support for Mips and Mips64 2017-12-11 15:44:40 +01:00
AsmGetRegsMips64.S Add libunwindstack support for Mips and Mips64 2017-12-11 15:44:40 +01:00
AsmGetRegsX86.S Fix wrong mov instruction size. 2018-01-25 11:44:19 -08:00
AsmGetRegsX86_64.S Add full support for initing registers. 2017-07-11 12:15:54 -07:00
Check.h Add error propagation into Unwinder/Elf objects. 2018-01-24 17:50:46 -08:00
DexFile.cpp Continue without DEX support if libdexfile_external.so fails to load. 2019-10-08 19:21:45 +01:00
DexFile.h Revert "Check for data races when reading JIT/DEX entries." 2019-04-05 18:23:32 +00:00
DexFiles.cpp Move the dexfile support to implementation. 2019-11-20 14:59:55 -08:00
DwarfCfa.cpp Move DwarfCfaInfo::kTable from data.rel.ro to rodata 2018-12-14 06:03:09 -08:00
DwarfCfa.h Move DwarfCfaInfo::kTable from data.rel.ro to rodata 2018-12-14 06:03:09 -08:00
DwarfDebugFrame.h Fix potential bad info in eh_frame_hdr. 2019-10-29 18:39:30 -07:00
DwarfEhFrame.h Fix potential bad info in eh_frame_hdr. 2019-10-29 18:39:30 -07:00
DwarfEhFrameWithHdr.cpp Fix potential bad info in eh_frame_hdr. 2019-10-29 18:39:30 -07:00
DwarfEhFrameWithHdr.h Fix potential bad info in eh_frame_hdr. 2019-10-29 18:39:30 -07:00
DwarfEncoding.h Make the library usable as a library. 2017-07-14 12:20:23 -07:00
DwarfMemory.cpp Handle when bias is different in elf headers. 2019-10-08 17:36:06 +00:00
DwarfOp.cpp libunwindstack: Move DwarfOp callback table to rodata section 2019-01-24 11:11:15 -08:00
DwarfOp.h libunwindstack: Move DwarfOp callback table to rodata section 2019-01-24 11:11:15 -08:00
DwarfSection.cpp Fix potential bad info in eh_frame_hdr. 2019-10-29 18:39:30 -07:00
Elf.cpp Use elf offset in signal step check. 2019-12-04 22:29:59 +00:00
ElfInterface.cpp Fix handling of possible bad gnu_debugdata_size. 2019-12-19 16:48:15 -08:00
ElfInterfaceArm.cpp Handle when bias is different in elf headers. 2019-10-08 17:36:06 +00:00
ElfInterfaceArm.h Handle when bias is different in elf headers. 2019-10-08 17:36:06 +00:00
Global.cpp Fix support finding global variables. 2019-12-03 17:35:00 -08:00
JitDebug.cpp Internalize subclasses of Memory 2019-06-11 12:09:18 -07:00
LocalUnwinder.cpp Fix pc/function name for signal handler frame. 2019-04-12 17:23:18 -07:00
Log.cpp Make the library usable as a library. 2017-07-14 12:20:23 -07:00
MapInfo.cpp Handle when bias is different in elf headers. 2019-10-08 17:36:06 +00:00
Maps.cpp unwindstack: fix dangling pointer in LocalUpdatableMaps. 2019-11-14 18:12:57 -08:00
Memory.cpp Fix handling of possible bad gnu_debugdata_size. 2019-12-19 16:48:15 -08:00
MemoryBuffer.h Fix handling of possible bad gnu_debugdata_size. 2019-12-19 16:48:15 -08:00
MemoryCache.h Internalize subclasses of Memory 2019-06-11 12:09:18 -07:00
MemoryFileAtOffset.h Internalize subclasses of Memory 2019-06-11 12:09:18 -07:00
MemoryLocal.h Internalize subclasses of Memory 2019-06-11 12:09:18 -07:00
MemoryOffline.h Internalize subclasses of Memory 2019-06-11 12:09:18 -07:00
MemoryOfflineBuffer.h Internalize subclasses of Memory 2019-06-11 12:09:18 -07:00
MemoryRange.h Internalize subclasses of Memory 2019-06-11 12:09:18 -07:00
MemoryRemote.h Internalize subclasses of Memory 2019-06-11 12:09:18 -07:00
OWNERS Add OWNERS. 2017-12-07 13:30:03 -08:00
Regs.cpp Expose per arch headers. 2018-02-08 19:29:08 -08:00
RegsArm.cpp Use elf offset in signal step check. 2019-12-04 22:29:59 +00:00
RegsArm64.cpp Use elf offset in signal step check. 2019-12-04 22:29:59 +00:00
RegsInfo.h Fix off by one error. 2018-10-23 18:10:41 +01:00
RegsMips.cpp Use elf offset in signal step check. 2019-12-04 22:29:59 +00:00
RegsMips64.cpp Use elf offset in signal step check. 2019-12-04 22:29:59 +00:00
RegsX86.cpp Use elf offset in signal step check. 2019-12-04 22:29:59 +00:00
RegsX86_64.cpp Use elf offset in signal step check. 2019-12-04 22:29:59 +00:00
Symbols.cpp Add missing includes. 2018-12-06 10:09:20 -08:00
Symbols.h Fix handling of load bias values. 2018-06-11 18:53:55 -07:00
TEST_MAPPING Add test mapping to run the libunwind tests. 2019-09-03 13:32:51 -07:00
Unwinder.cpp Move the dexfile support to implementation. 2019-11-20 14:59:55 -08:00