From c1fa8300ec275985d64620dcd400c223c19b847d Mon Sep 17 00:00:00 2001 From: Rui Ueyama Date: Thu, 29 Jan 2015 23:23:57 +0000 Subject: [PATCH] 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 --- lld/lib/ReaderWriter/ELF/ArrayOrderPass.cpp | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/lld/lib/ReaderWriter/ELF/ArrayOrderPass.cpp b/lld/lib/ReaderWriter/ELF/ArrayOrderPass.cpp index b74c6dd..b279495 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 &f) { // according to their number. Sections without optional // numer suffix should go last. - uint32_t leftPriority = std::numeric_limits::max(); - if (!leftNum.empty()) - leftNum.getAsInteger(10, leftPriority); - - uint32_t rightPriority = std::numeric_limits::max(); - if (!rightNum.empty()) - rightNum.getAsInteger(10, rightPriority); + uint32_t leftPriority; + uint32_t rightPriority; + if (leftNum.getAsInteger(10, leftPriority)) + leftPriority = std::numeric_limits::max(); + if (rightNum.getAsInteger(10, rightPriority)) + rightPriority = std::numeric_limits::max(); return leftPriority < rightPriority; }); -- 2.7.4