mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-22 10:42:39 +01:00
[MachO] Fix LC_DYSYMTAB validation for external symbols
We were validating the same index (ilocalsym) twice, while iextdefsym was never validated. llvm-svn: 341378
This commit is contained in:
parent
11ae2c8ea9
commit
41e2dc9311
@ -1592,7 +1592,7 @@ MachOObjectFile::MachOObjectFile(MemoryBufferRef Object, bool IsLittleEndian,
|
||||
"command extends past the end of the symbol table");
|
||||
return;
|
||||
}
|
||||
if (Dysymtab.nextdefsym != 0 && Dysymtab.ilocalsym > Symtab.nsyms) {
|
||||
if (Dysymtab.nextdefsym != 0 && Dysymtab.iextdefsym > Symtab.nsyms) {
|
||||
Err = malformedError("nextdefsym in LC_DYSYMTAB load command "
|
||||
"extends past the end of the symbol table");
|
||||
return;
|
||||
|
51
test/tools/llvm-objdump/macho-bad-dysymtab.test
Normal file
51
test/tools/llvm-objdump/macho-bad-dysymtab.test
Normal file
@ -0,0 +1,51 @@
|
||||
#RUN: yaml2obj %s > %t1.dylib
|
||||
#RUN: not llvm-objdump -d %t1.dylib 2>&1 | FileCheck %s
|
||||
|
||||
--- !mach-o
|
||||
FileHeader:
|
||||
magic: 0xFEEDFACF
|
||||
cputype: 0x01000007
|
||||
cpusubtype: 0x80000003
|
||||
filetype: 0x00000002
|
||||
ncmds: 2
|
||||
sizeofcmds: 104
|
||||
flags: 0x00200085
|
||||
reserved: 0x00000000
|
||||
LoadCommands:
|
||||
- cmd: LC_SYMTAB
|
||||
cmdsize: 24
|
||||
symoff: 136
|
||||
nsyms: 3
|
||||
stroff: 0
|
||||
strsize: 0
|
||||
- cmd: LC_DYSYMTAB
|
||||
cmdsize: 80
|
||||
ilocalsym: 0
|
||||
nlocalsym: 0
|
||||
iextdefsym: 4
|
||||
#CHECK: truncated or malformed object (nextdefsym in LC_DYSYMTAB load command extends past the end of the symbol table)
|
||||
nextdefsym: 2
|
||||
iundefsym: 2
|
||||
nundefsym: 1
|
||||
tocoff: 0
|
||||
ntoc: 0
|
||||
modtaboff: 0
|
||||
nmodtab: 0
|
||||
extrefsymoff: 0
|
||||
nextrefsyms: 0
|
||||
indirectsymoff: 0
|
||||
nindirectsyms: 0
|
||||
extreloff: 0
|
||||
nextrel: 0
|
||||
locreloff: 0
|
||||
nlocrel: 0
|
||||
LinkEditData:
|
||||
StringTable:
|
||||
- ' '
|
||||
- __mh_execute_header
|
||||
- _main
|
||||
- dyld_stub_binder
|
||||
- ''
|
||||
- ''
|
||||
- ''
|
||||
...
|
Loading…
Reference in New Issue
Block a user