1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-22 18:54:02 +01:00
llvm-mirror/tools/llvm-readobj
Georgii Rymar d2790aee19 [llvm-readobj] - Validate the DT_STRSZ value to avoid crash.
It is possible to trigger a crash when a dynamic symbol has a
broken (too large) st_name and the DT_STRSZ is also broken.

We have the following code in the `Elf_Sym_Impl<ELFT>::getName`:

```
template <class ELFT>
Expected<StringRef> Elf_Sym_Impl<ELFT>::getName(StringRef StrTab) const {
  uint32_t Offset = this->st_name;
  if (Offset >= StrTab.size())
    return createStringError(object_error::parse_failed,
                             "st_name (0x%" PRIx32
                             ") is past the end of the string table"
                             " of size 0x%zx",
                             Offset, StrTab.size());
...
```

The problem is that `StrTab` here is a `ELFDumper::DynamicStringTab` member
which is not validated properly on initialization. So it is possible to bypass the
`if` even when the `st_name` is huge.

This patch fixes the issue.

Differential revision: https://reviews.llvm.org/D82201
2020-06-22 15:24:59 +03:00
..
ARMEHABIPrinter.h [llvm-readobj] - Remove 'error(Error EC)' helper. 2019-08-13 12:07:41 +00:00
ARMWinEHPrinter.cpp [llvm-readobj] Fix/improve printing WinEH unwind info for linked PE images 2019-12-11 10:20:34 +02:00
ARMWinEHPrinter.h [Object] Change getSectionName() to return Expected<StringRef> 2019-05-02 10:32:03 +00:00
CMakeLists.txt [Object][XCOFF] Add an XCOFF dumper for llvm-readobj. 2019-05-03 12:57:07 +00:00
COFFDumper.cpp Re-land "Migrate the rest of COFFObjectFile to Error" 2020-06-11 14:46:16 -07:00
COFFImportDumper.cpp [Object] Change SymbolicFile::printSymbolName to use Error 2019-05-10 09:59:04 +00:00
DwarfCFIEHPrinter.h [llvm-readobj] - Cleanup the DwarfCFIEH::PrinterContext class. NFCI. 2020-05-29 16:45:18 +03:00
ELFDumper.cpp [llvm-readobj] - Validate the DT_STRSZ value to avoid crash. 2020-06-22 15:24:59 +03:00
Error.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
Error.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
llvm-readobj.cpp [llvm-readobj] set --elf-cg-profile as alias of --cg-profile 2020-06-17 11:24:45 -07:00
llvm-readobj.h [llvm-readobj] - Remove reportError(std::error_code EC, StringRef Input) helper. 2019-08-22 08:56:24 +00:00
LLVMBuild.txt Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
MachODumper.cpp Recommit r369190 "[llvm-readobj/llvm-readelf] - Improve/cleanup the error reporting API." 2019-08-17 16:07:18 +00:00
ObjDumper.cpp Make bugpoint work with gcc5 again. 2020-01-29 03:11:00 +01:00
ObjDumper.h [llvm-readelf] - Split GNUStyle<ELFT>::printHashHistogram. NFC. 2020-05-27 13:59:20 +03:00
StackMapPrinter.h [StackMaps] Add location size to llvm-readobj -stackmap output 2019-04-13 03:08:45 +00:00
WasmDumper.cpp [WebAssembly] Adding 64-bit version of R_WASM_MEMORY_ADDR_* relocs 2020-06-15 10:07:42 -07:00
Win64EHDumper.cpp [llvm-readobj] Fix/improve printing WinEH unwind info for linked PE images 2019-12-11 10:20:34 +02:00
Win64EHDumper.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
WindowsResourceDumper.cpp [llvm-readobj] Print the resource type textually for .res files 2019-08-29 08:59:31 +00:00
WindowsResourceDumper.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
XCOFFDumper.cpp [NFC][XCOFF] refactor readobj/XCOFFDumper.cpp 2020-04-07 11:33:31 -04:00