diff options
author | David Majnemer <david.majnemer@gmail.com> | 2015-07-09 18:14:31 +0000 |
---|---|---|
committer | David Majnemer <david.majnemer@gmail.com> | 2015-07-09 18:14:31 +0000 |
commit | 0373d53ae4eeca83f0c895b95cd7f9e4d6511845 (patch) | |
tree | e84464c83ed6d3a361a7e0e0a1e3d091e78e025d /llvm/tools/llvm-readobj/COFFDumper.cpp | |
parent | 2603a8fa243e6e3db4550395a4183ec59f12edfd (diff) | |
download | bcm5719-llvm-0373d53ae4eeca83f0c895b95cd7f9e4d6511845.tar.gz bcm5719-llvm-0373d53ae4eeca83f0c895b95cd7f9e4d6511845.zip |
[llvm-readobj] Re-add sanity checking which was accidentally removed in r241764
llvm-svn: 241831
Diffstat (limited to 'llvm/tools/llvm-readobj/COFFDumper.cpp')
-rw-r--r-- | llvm/tools/llvm-readobj/COFFDumper.cpp | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/llvm/tools/llvm-readobj/COFFDumper.cpp b/llvm/tools/llvm-readobj/COFFDumper.cpp index ccb542e37e5..cf897d7cb48 100644 --- a/llvm/tools/llvm-readobj/COFFDumper.cpp +++ b/llvm/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; { |