diff options
Diffstat (limited to 'llvm')
-rw-r--r-- | llvm/test/tools/llvm-objdump/Inputs/malformed-machos/mem-crup-0001.macho | bin | 0 -> 9248 bytes | |||
-rw-r--r-- | llvm/test/tools/llvm-objdump/Inputs/malformed-machos/mem-crup-0006.macho | bin | 0 -> 9248 bytes | |||
-rw-r--r-- | llvm/test/tools/llvm-objdump/malformed-machos.test | 14 | ||||
-rw-r--r-- | llvm/tools/llvm-objdump/MachODump.cpp | 6 |
4 files changed, 18 insertions, 2 deletions
diff --git a/llvm/test/tools/llvm-objdump/Inputs/malformed-machos/mem-crup-0001.macho b/llvm/test/tools/llvm-objdump/Inputs/malformed-machos/mem-crup-0001.macho Binary files differnew file mode 100644 index 00000000000..d81f9f00f4a --- /dev/null +++ b/llvm/test/tools/llvm-objdump/Inputs/malformed-machos/mem-crup-0001.macho diff --git a/llvm/test/tools/llvm-objdump/Inputs/malformed-machos/mem-crup-0006.macho b/llvm/test/tools/llvm-objdump/Inputs/malformed-machos/mem-crup-0006.macho Binary files differnew file mode 100644 index 00000000000..13a4e9aea7f --- /dev/null +++ b/llvm/test/tools/llvm-objdump/Inputs/malformed-machos/mem-crup-0006.macho diff --git a/llvm/test/tools/llvm-objdump/malformed-machos.test b/llvm/test/tools/llvm-objdump/malformed-machos.test new file mode 100644 index 00000000000..4e1765f7f42 --- /dev/null +++ b/llvm/test/tools/llvm-objdump/malformed-machos.test @@ -0,0 +1,14 @@ +// These test checks that llvm-objdump will not crash with malformed Mach-O +// files. So the check line is not all that important but the bug fixes to +// make sure llvm-objdump is robust is what matters. +# RUN: llvm-objdump -macho -objc-meta-data \ +# RUN: %p/Inputs/malformed-machos/mem-crup-0001.macho \ +# RUN: | FileCheck -check-prefix=m0001 %s + +# m0001: (method_t extends past the end of the section) + +# RUN: llvm-objdump -macho -objc-meta-data \ +# RUN: %p/Inputs/malformed-machos/mem-crup-0006.macho \ +# RUN: | FileCheck -check-prefix=m0006 %s + +# m0006: ivarLayout 0x8 diff --git a/llvm/tools/llvm-objdump/MachODump.cpp b/llvm/tools/llvm-objdump/MachODump.cpp index 164fb4ce4bc..0e9bf3695d8 100644 --- a/llvm/tools/llvm-objdump/MachODump.cpp +++ b/llvm/tools/llvm-objdump/MachODump.cpp @@ -3236,6 +3236,8 @@ walk_pointer_list_32(const char *listname, const SectionRef S, } static void print_layout_map(const char *layout_map, uint32_t left) { + if (layout_map == nullptr) + return; outs() << " layout map: "; do { outs() << format("0x%02" PRIx32, (*layout_map) & 0xff) << " "; @@ -3299,8 +3301,8 @@ static void print_method_list64_t(uint64_t p, struct DisassembleInfo *info, return; memset(&m, '\0', sizeof(struct method64_t)); if (left < sizeof(struct method64_t)) { - memcpy(&ml, r, left); - outs() << indent << " (method_t entends past the end of the section)\n"; + memcpy(&m, r, left); + outs() << indent << " (method_t extends past the end of the section)\n"; } else memcpy(&m, r, sizeof(struct method64_t)); if (info->O->isLittleEndian() != sys::IsLittleEndianHost) |