summaryrefslogtreecommitdiffstats
path: root/llvm/tools/llvm-readobj/COFFDumper.cpp
diff options
context:
space:
mode:
authorDavid Majnemer <david.majnemer@gmail.com>2015-07-09 18:14:31 +0000
committerDavid Majnemer <david.majnemer@gmail.com>2015-07-09 18:14:31 +0000
commit0373d53ae4eeca83f0c895b95cd7f9e4d6511845 (patch)
treee84464c83ed6d3a361a7e0e0a1e3d091e78e025d /llvm/tools/llvm-readobj/COFFDumper.cpp
parent2603a8fa243e6e3db4550395a4183ec59f12edfd (diff)
downloadbcm5719-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.cpp11
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;
{
OpenPOWER on IntegriCloud