[llvm] r341378 - [MachO] Fix LC_DYSYMTAB validation for external symbols
Francis Visoiu Mistrih via llvm-commits
llvm-commits at lists.llvm.org
Tue Sep 4 09:31:48 PDT 2018
Author: thegameg
Date: Tue Sep 4 09:31:48 2018
New Revision: 341378
URL: http://llvm.org/viewvc/llvm-project?rev=341378&view=rev
Log:
[MachO] Fix LC_DYSYMTAB validation for external symbols
We were validating the same index (ilocalsym) twice, while iextdefsym
was never validated.
Added:
llvm/trunk/test/tools/llvm-objdump/macho-bad-dysymtab.test
Modified:
llvm/trunk/lib/Object/MachOObjectFile.cpp
Modified: llvm/trunk/lib/Object/MachOObjectFile.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Object/MachOObjectFile.cpp?rev=341378&r1=341377&r2=341378&view=diff
==============================================================================
--- llvm/trunk/lib/Object/MachOObjectFile.cpp (original)
+++ llvm/trunk/lib/Object/MachOObjectFile.cpp Tue Sep 4 09:31:48 2018
@@ -1592,7 +1592,7 @@ MachOObjectFile::MachOObjectFile(MemoryB
"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;
Added: llvm/trunk/test/tools/llvm-objdump/macho-bad-dysymtab.test
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-objdump/macho-bad-dysymtab.test?rev=341378&view=auto
==============================================================================
--- llvm/trunk/test/tools/llvm-objdump/macho-bad-dysymtab.test (added)
+++ llvm/trunk/test/tools/llvm-objdump/macho-bad-dysymtab.test Tue Sep 4 09:31:48 2018
@@ -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
+ - ''
+ - ''
+ - ''
+...
More information about the llvm-commits
mailing list