summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
authorDavid Majnemer <david.majnemer@gmail.com>2016-12-18 00:41:10 +0000
committerDavid Majnemer <david.majnemer@gmail.com>2016-12-18 00:41:10 +0000
commit9bca03bf81c4f3e68242325b779438afa14024f4 (patch)
tree2e3214e6a782dd47002cbd629cc7a77cc1f97ce9 /llvm/lib
parentca7d19e595fdf2ebbbf068f1388daaacfe4691c8 (diff)
downloadbcm5719-llvm-9bca03bf81c4f3e68242325b779438afa14024f4.tar.gz
bcm5719-llvm-9bca03bf81c4f3e68242325b779438afa14024f4.zip
[PDB] Validate superblock addresses
- Validate the address of the block map. - Validate the address of the free block map. llvm-svn: 290053
Diffstat (limited to 'llvm/lib')
-rw-r--r--llvm/lib/DebugInfo/MSF/MSFCommon.cpp9
1 files changed, 9 insertions, 0 deletions
diff --git a/llvm/lib/DebugInfo/MSF/MSFCommon.cpp b/llvm/lib/DebugInfo/MSF/MSFCommon.cpp
index d79ccafe898..fdab7884646 100644
--- a/llvm/lib/DebugInfo/MSF/MSFCommon.cpp
+++ b/llvm/lib/DebugInfo/MSF/MSFCommon.cpp
@@ -44,5 +44,14 @@ Error llvm::msf::validateSuperBlock(const SuperBlock &SB) {
return make_error<MSFError>(msf_error_code::invalid_format,
"Block 0 is reserved");
+ if (SB.BlockMapAddr >= SB.NumBlocks)
+ return make_error<MSFError>(msf_error_code::invalid_format,
+ "Block map address is invalid.");
+
+ if (SB.FreeBlockMapBlock != 1 && SB.FreeBlockMapBlock != 2)
+ return make_error<MSFError>(
+ msf_error_code::invalid_format,
+ "The free block map isn't at block 1 or block 2.");
+
return Error::success();
}
OpenPOWER on IntegriCloud