diff options
author | Rafael Espindola <rafael.espindola@gmail.com> | 2013-04-19 11:36:47 +0000 |
---|---|---|
committer | Rafael Espindola <rafael.espindola@gmail.com> | 2013-04-19 11:36:47 +0000 |
commit | feef8c246966bcf8f3e21e74155812c98d48bda2 (patch) | |
tree | 36c00e091e9363d76bdb562cfecabc6132da1f2f /llvm/tools/llvm-objdump/MachODump.cpp | |
parent | a155ab2dd2290f3571853038c8495026160659cd (diff) | |
download | bcm5719-llvm-feef8c246966bcf8f3e21e74155812c98d48bda2.tar.gz bcm5719-llvm-feef8c246966bcf8f3e21e74155812c98d48bda2.zip |
Don't read one command past the end.
Thanks to Evgeniy Stepanov for reporting this.
It might be a good idea to add a command iterator abstraction to MachO.h, but
this fixes the bug for now.
llvm-svn: 179848
Diffstat (limited to 'llvm/tools/llvm-objdump/MachODump.cpp')
-rw-r--r-- | llvm/tools/llvm-objdump/MachODump.cpp | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/llvm/tools/llvm-objdump/MachODump.cpp b/llvm/tools/llvm-objdump/MachODump.cpp index e4d9ce24985..d78d7f31a6c 100644 --- a/llvm/tools/llvm-objdump/MachODump.cpp +++ b/llvm/tools/llvm-objdump/MachODump.cpp @@ -205,7 +205,7 @@ getSectionsAndSymbols(const macho::Header Header, MachOObjectFile::LoadCommandInfo Command = MachOObj->getFirstLoadCommandInfo(); - for (unsigned i = 0; i != Header.NumLoadCommands; ++i) { + for (unsigned i = 0; ; ++i) { if (Command.C.Type == macho::LCT_FunctionStarts) { // We found a function starts segment, parse the addresses for later // consumption. @@ -214,7 +214,11 @@ getSectionsAndSymbols(const macho::Header Header, MachOObj->ReadULEB128s(LLC.DataOffset, FoundFns); } - Command = MachOObj->getNextLoadCommandInfo(Command); + + if (i == Header.NumLoadCommands - 1) + break; + else + Command = MachOObj->getNextLoadCommandInfo(Command); } } |