From 9bca03bf81c4f3e68242325b779438afa14024f4 Mon Sep 17 00:00:00 2001 From: David Majnemer Date: Sun, 18 Dec 2016 00:41:10 +0000 Subject: [PDB] Validate superblock addresses - Validate the address of the block map. - Validate the address of the free block map. llvm-svn: 290053 --- llvm/lib/DebugInfo/MSF/MSFCommon.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'llvm/lib/DebugInfo/MSF') 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(msf_error_code::invalid_format, "Block 0 is reserved"); + if (SB.BlockMapAddr >= SB.NumBlocks) + return make_error(msf_error_code::invalid_format, + "Block map address is invalid."); + + if (SB.FreeBlockMapBlock != 1 && SB.FreeBlockMapBlock != 2) + return make_error( + msf_error_code::invalid_format, + "The free block map isn't at block 1 or block 2."); + return Error::success(); } -- cgit v1.2.3