llvm-project/llvm/lib/Object
Adrian Prantl bbe980dfe1 Fix computeSymbolSizes SEGFAULT on invalid file
We use llvm-symbolizer in some production systems, and we run it
against all possibly related files, including some that are not
ELF. We noticed that for some of those invalid files, llvm-symbolizer
would crash with SEGFAULT. Here is an example of such a file.

It is due to that in computeSymbolSizes, a loop uses condition

  for (unsigned I = 0, N = Addresses.size() - 1; I < N; ++I) {

where if Addresses.size() is 0, N would overflow and causing the loop
to access invalid memory.

Instead of patching the loop conditions, the commit makes so that the
function returns early if Addresses is empty.

Validated by checking that llvm-symbolizer no longer crashes.

Patch by Teng Qin!

Differential Revision: https://reviews.llvm.org/D44285

llvm-svn: 330610
2018-04-23 16:08:01 +00:00
..
Archive.cpp Make 32-bit member offset in Archive::Symbol::getMember 64-bit 2017-10-27 21:47:38 +00:00
ArchiveWriter.cpp [llvm-ar] Support multiple dashed options 2018-03-28 17:21:14 +00:00
Binary.cpp Update a few switch statements to handle file_magic::pdb. 2018-03-07 18:58:33 +00:00
CMakeLists.txt Bitcode: Write the irsymtab to disk. 2017-06-27 23:50:11 +00:00
COFFImportFile.cpp [COFF] Keep the underscore on exported decorated stdcall functions in MSVC mode 2018-01-20 11:44:32 +00:00
COFFModuleDefinition.cpp [COFF] Ignore semicolons in module definition identifiers 2017-12-06 19:18:24 +00:00
COFFObjectFile.cpp COFF: Make SectionChunk::Relocs field an ArrayRef. NFCI. 2018-04-17 01:54:34 +00:00
Decompressor.cpp Revert "[Decompression] Fail gracefully when out of memory" 2017-09-05 22:04:00 +00:00
ELF.cpp CodeGen: support an extension to pass linker options on ELF 2018-01-30 16:29:29 +00:00
ELFObjectFile.cpp [RISCV] Add ELFObjectFileBase::getRISCVFeatures let llvm-objdump could get RISCV target feature 2018-02-02 06:01:02 +00:00
Error.cpp Revert "[ADT] Make Twine's copy constructor private." 2017-10-11 23:54:34 +00:00
IRObjectFile.cpp Remove redundant includes from lib/Object. 2017-12-13 21:30:55 +00:00
IRSymtab.cpp Sink Analysis/ObjectUtil(canBeOmittedFromSymbolTable) into IR so it can be legitimately be used by Object/IRSymtab 2018-03-21 19:23:45 +00:00
LLVMBuild.txt Move Object format code to lib/BinaryFormat. 2017-06-07 03:48:56 +00:00
MachOObjectFile.cpp [llvm-objdump] Print "..." instead of random data for virtual sections 2018-04-19 17:02:57 +00:00
MachOUniversal.cpp Fix a bugs with using some Mach-O command line flags like "-arch armv7m". 2016-12-16 22:54:02 +00:00
ModuleSymbolTable.cpp LowerTypeTests: Propagate symver directives 2018-04-20 01:36:48 +00:00
Object.cpp Report fatal error in the case of out of memory 2018-02-20 05:41:26 +00:00
ObjectFile.cpp Update a few switch statements to handle file_magic::pdb. 2018-03-07 18:58:33 +00:00
RecordStreamer.cpp LowerTypeTests: Propagate symver directives 2018-04-20 01:36:48 +00:00
RecordStreamer.h LowerTypeTests: Propagate symver directives 2018-04-20 01:36:48 +00:00
SymbolSize.cpp Fix computeSymbolSizes SEGFAULT on invalid file 2018-04-23 16:08:01 +00:00
SymbolicFile.cpp Update a few switch statements to handle file_magic::pdb. 2018-03-07 18:58:33 +00:00
WasmObjectFile.cpp [WebAssembly] Distinguish debug/symbol names in the Wasm structs. NFC 2018-04-20 17:07:24 +00:00
WindowsResource.cpp [Support] Add WritableMemoryBuffer::getNewMemBuffer 2018-01-09 17:26:06 +00:00