diff options
author | Rui Ueyama <ruiu@google.com> | 2015-01-29 23:23:57 +0000 |
---|---|---|
committer | Rui Ueyama <ruiu@google.com> | 2015-01-29 23:23:57 +0000 |
commit | c1fa8300ec275985d64620dcd400c223c19b847d (patch) | |
tree | 2e4b34a92a976877b14130aa5d9684215767d307 | |
parent | 0f776b09050f4a31b581e5b0ec4f2885f3cb4cd6 (diff) | |
download | bcm5719-llvm-c1fa8300ec275985d64620dcd400c223c19b847d.tar.gz bcm5719-llvm-c1fa8300ec275985d64620dcd400c223c19b847d.zip |
ELF: Check StringRef::getAsInteger's return value.
getAsInteger may partially update its result argument. We need to
check function return value to handle errors reliably.
llvm-svn: 227510
-rw-r--r-- | lld/lib/ReaderWriter/ELF/ArrayOrderPass.cpp | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/lld/lib/ReaderWriter/ELF/ArrayOrderPass.cpp b/lld/lib/ReaderWriter/ELF/ArrayOrderPass.cpp index b74c6dd6a8d..b279495d02b 100644 --- a/lld/lib/ReaderWriter/ELF/ArrayOrderPass.cpp +++ b/lld/lib/ReaderWriter/ELF/ArrayOrderPass.cpp @@ -42,13 +42,12 @@ void ArrayOrderPass::perform(std::unique_ptr<MutableFile> &f) { // according to their number. Sections without optional // numer suffix should go last. - uint32_t leftPriority = std::numeric_limits<uint32_t>::max(); - if (!leftNum.empty()) - leftNum.getAsInteger(10, leftPriority); - - uint32_t rightPriority = std::numeric_limits<uint32_t>::max(); - if (!rightNum.empty()) - rightNum.getAsInteger(10, rightPriority); + uint32_t leftPriority; + uint32_t rightPriority; + if (leftNum.getAsInteger(10, leftPriority)) + leftPriority = std::numeric_limits<uint32_t>::max(); + if (rightNum.getAsInteger(10, rightPriority)) + rightPriority = std::numeric_limits<uint32_t>::max(); return leftPriority < rightPriority; }); |