From: David Majnemer Date: Thu, 9 Jul 2015 18:14:31 +0000 (+0000) Subject: [llvm-readobj] Re-add sanity checking which was accidentally removed in r241764 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=8343a0aa3b370b3721ff53203c4138a72269ed5d;p=oota-llvm.git [llvm-readobj] Re-add sanity checking which was accidentally removed in r241764 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241831 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/tools/llvm-readobj/COFFDumper.cpp b/tools/llvm-readobj/COFFDumper.cpp index ccb542e37e5..cf897d7cb48 100644 --- a/tools/llvm-readobj/COFFDumper.cpp +++ b/tools/llvm-readobj/COFFDumper.cpp @@ -597,8 +597,15 @@ void COFFDumper::printCodeViewDebugInfo(const SectionRef &Section) { // in the line table. The filename string is accessed using double // indirection to the string table subsection using the index subsection. uint32_t OffsetInIndex = DE.getU32(&Offset), - SegmentLength = DE.getU32(&Offset); - Offset += sizeof(uint32_t); // Skip FullSegmentSize + SegmentLength = DE.getU32(&Offset), + FullSegmentSize = DE.getU32(&Offset); + + if (FullSegmentSize != + 12 + 8 * SegmentLength + + (HasColumnInformation ? 4 * SegmentLength : 0)) { + error(object_error::parse_failed); + return; + } uint32_t FilenameOffset; {