summaryrefslogtreecommitdiffstats
path: root/llvm/tools/llvm-dwp/llvm-dwp.cpp
diff options
context:
space:
mode:
authorDavid Blaikie <dblaikie@gmail.com>2016-05-23 17:59:17 +0000
committerDavid Blaikie <dblaikie@gmail.com>2016-05-23 17:59:17 +0000
commit05f84cd31d13f9130e35ed438ad72ffbe75a163b (patch)
treed2c97444f26a5ea07fea561b3758ef4fd2a2a70a /llvm/tools/llvm-dwp/llvm-dwp.cpp
parente8dc090a2b5eb642bcf6d5c9e89a19d5f109d28b (diff)
downloadbcm5719-llvm-05f84cd31d13f9130e35ed438ad72ffbe75a163b.tar.gz
bcm5719-llvm-05f84cd31d13f9130e35ed438ad72ffbe75a163b.zip
llvm-dwp: More error handling around invalid compressed sections
llvm-svn: 270466
Diffstat (limited to 'llvm/tools/llvm-dwp/llvm-dwp.cpp')
-rw-r--r--llvm/tools/llvm-dwp/llvm-dwp.cpp11
1 files changed, 4 insertions, 7 deletions
diff --git a/llvm/tools/llvm-dwp/llvm-dwp.cpp b/llvm/tools/llvm-dwp/llvm-dwp.cpp
index b88f0ef37d7..1ce6a14d37b 100644
--- a/llvm/tools/llvm-dwp/llvm-dwp.cpp
+++ b/llvm/tools/llvm-dwp/llvm-dwp.cpp
@@ -432,20 +432,17 @@ static Error write(MCStreamer &Out, ArrayRef<std::string> Inputs) {
return errorCodeToError(Err);
if (Name.startswith("zdebug_")) {
+ UncompressedSections.emplace_back();
uint64_t OriginalSize;
if (!zlib::isAvailable())
return make_error<DWPError>("zlib not available");
- if (!consumeCompressedDebugSectionHeader(Contents, OriginalSize))
+ if (!consumeCompressedDebugSectionHeader(Contents, OriginalSize) ||
+ zlib::uncompress(Contents, UncompressedSections.back(),
+ OriginalSize) != zlib::StatusOK)
return make_error<DWPError>(
("failure while decompressing compressed section: '" + Name +
"\'")
.str());
- UncompressedSections.resize(UncompressedSections.size() + 1);
- if (zlib::uncompress(Contents, UncompressedSections.back(),
- OriginalSize) != zlib::StatusOK) {
- UncompressedSections.pop_back();
- continue;
- }
Name = Name.substr(1);
Contents = UncompressedSections.back();
}
OpenPOWER on IntegriCloud