From 4d7f70d47e027f5ba6d532cd4bd4f53014b9bd7a Mon Sep 17 00:00:00 2001 From: Juergen Ributzka Date: Fri, 19 Dec 2014 02:31:01 +0000 Subject: [PATCH] [Object] Don't crash on empty export lists. Summary: This fixes the exports iterator if the export list is empty. Reviewers: Bigcheese, kledzik Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D6732 llvm-svn: 224563 --- llvm/lib/Object/MachOObjectFile.cpp | 5 ++++- llvm/test/Object/Inputs/macho-no-exports.dylib | Bin 0 -> 4208 bytes llvm/test/Object/objdump-export-list.test | 4 ++++ 3 files changed, 8 insertions(+), 1 deletion(-) create mode 100755 llvm/test/Object/Inputs/macho-no-exports.dylib create mode 100644 llvm/test/Object/objdump-export-list.test diff --git a/llvm/lib/Object/MachOObjectFile.cpp b/llvm/lib/Object/MachOObjectFile.cpp index fd086af..92981fe 100644 --- a/llvm/lib/Object/MachOObjectFile.cpp +++ b/llvm/lib/Object/MachOObjectFile.cpp @@ -1640,7 +1640,10 @@ void ExportEntry::moveNext() { iterator_range MachOObjectFile::exports(ArrayRef Trie) { ExportEntry Start(Trie); - Start.moveToFirst(); + if (Trie.size() == 0) + Start.moveToEnd(); + else + Start.moveToFirst(); ExportEntry Finish(Trie); Finish.moveToEnd(); diff --git a/llvm/test/Object/Inputs/macho-no-exports.dylib b/llvm/test/Object/Inputs/macho-no-exports.dylib new file mode 100755 index 0000000000000000000000000000000000000000..6e1be6ca97e67b5281475a295532847b3be69324 GIT binary patch literal 4208 zcmeHLyGjF55IxbTA&FpNq1dR1_+S&eSXhV{*kBOB6lvsQ+(iTCL3RU4mqx$A+TO-e z@Ds#8@DJ>)f{14}dy^0&SX$hHvpaL{%%5QDTCfN=aJ4u zzU5m9;)EDy!}E!Z-#L!Ac5_nc%Qy8qkvJsC}0#Y3K#{9 z0!9I&fKk9GU=;Wt3UuF+vaatDdi|UyC&O)ooLmpcikKK$2^m7J4uS&~>RK#=3$vp< PzgbeHa@BDgk_CJN(&a!H literal 0 HcmV?d00001 diff --git a/llvm/test/Object/objdump-export-list.test b/llvm/test/Object/objdump-export-list.test new file mode 100644 index 0000000..74344c1 --- /dev/null +++ b/llvm/test/Object/objdump-export-list.test @@ -0,0 +1,4 @@ +RUN: llvm-objdump -exports-trie %p/Inputs/macho-no-exports.dylib | FileCheck %s + +; Test that we don't crash with an empty export list. +CHECK: macho-no-exports.dylib: file format Mach-O 64-bit x86-64 -- 2.7.4