diff options
author | David Majnemer <david.majnemer@gmail.com> | 2016-05-29 06:18:08 +0000 |
---|---|---|
committer | David Majnemer <david.majnemer@gmail.com> | 2016-05-29 06:18:08 +0000 |
commit | 61f179815a19f7045d5ea478eea57ce6caa08eb0 (patch) | |
tree | 0c2bd10a18b9de14b5f64f680b5b36a82b53e7aa /llvm/tools/llvm-readobj/COFFDumper.cpp | |
parent | ba1439229ac922cf3772d598db472229ed114b5f (diff) | |
download | bcm5719-llvm-61f179815a19f7045d5ea478eea57ce6caa08eb0.tar.gz bcm5719-llvm-61f179815a19f7045d5ea478eea57ce6caa08eb0.zip |
Don't dereference a symbol iterator before checking for the end case
llvm-svn: 271173
Diffstat (limited to 'llvm/tools/llvm-readobj/COFFDumper.cpp')
-rw-r--r-- | llvm/tools/llvm-readobj/COFFDumper.cpp | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/llvm/tools/llvm-readobj/COFFDumper.cpp b/llvm/tools/llvm-readobj/COFFDumper.cpp index 029674b8d63..bf6a7b4a2b0 100644 --- a/llvm/tools/llvm-readobj/COFFDumper.cpp +++ b/llvm/tools/llvm-readobj/COFFDumper.cpp @@ -208,15 +208,19 @@ std::error_code COFFDumper::resolveSymbol(const coff_section *Section, uint64_t Offset, SymbolRef &Sym) { cacheRelocations(); const auto &Relocations = RelocMap[Section]; + auto SymI = Obj->symbol_end(); for (const auto &Relocation : Relocations) { uint64_t RelocationOffset = Relocation.getOffset(); if (RelocationOffset == Offset) { - Sym = *Relocation.getSymbol(); - return readobj_error::success; + SymI = Relocation.getSymbol(); + break; } } - return readobj_error::unknown_symbol; + if (SymI == Obj->symbol_end()) + return readobj_error::unknown_symbol; + Sym = *SymI; + return readobj_error::success; } // Given a section and an offset into this section the function returns the name |