From: Esme-Yi Date: Fri, 6 Aug 2021 08:54:02 +0000 (+0000) Subject: [llvm-readobj][XCOFF] Warn about invalid offset X-Git-Tag: upstream/15.0.7~34496 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=2919ac8971727930d939aeccfc9a4e50ad6b9884;p=platform%2Fupstream%2Fllvm.git [llvm-readobj][XCOFF] Warn about invalid offset Reviewed By: vitalybuka Differential Revision: https://reviews.llvm.org/D107398 --- diff --git a/llvm/tools/llvm-readobj/ObjDumper.cpp b/llvm/tools/llvm-readobj/ObjDumper.cpp index 8cdbd95..dc4a303 100644 --- a/llvm/tools/llvm-readobj/ObjDumper.cpp +++ b/llvm/tools/llvm-readobj/ObjDumper.cpp @@ -54,10 +54,16 @@ static void printAsPrintable(raw_ostream &W, const uint8_t *Start, size_t Len) { void ObjDumper::printAsStringList(StringRef StringContent, size_t StringDataOffset) { - if (StringContent.size() < StringDataOffset) { - reportUniqueWarning("error: offset is out of string contents"); + size_t StrSize = StringContent.size(); + if (StrSize == 0) + return; + if (StrSize < StringDataOffset) { + reportUniqueWarning("offset (0x" + Twine::utohexstr(StringDataOffset) + + ") is past the end of the contents (size 0x" + + Twine::utohexstr(StrSize) + ")"); return; } + const uint8_t *StrContent = StringContent.bytes_begin(); // Some formats contain additional metadata at the start which should not be // interpreted as strings. Skip these bytes, but account for them in the