summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRui Ueyama <ruiu@google.com>2015-01-29 23:23:57 +0000
committerRui Ueyama <ruiu@google.com>2015-01-29 23:23:57 +0000
commitc1fa8300ec275985d64620dcd400c223c19b847d (patch)
tree2e4b34a92a976877b14130aa5d9684215767d307
parent0f776b09050f4a31b581e5b0ec4f2885f3cb4cd6 (diff)
downloadbcm5719-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.cpp13
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;
});
OpenPOWER on IntegriCloud