diff options
Diffstat (limited to 'llvm/lib/DebugInfo/MSF/MSFCommon.cpp')
-rw-r--r-- | llvm/lib/DebugInfo/MSF/MSFCommon.cpp | 9 |
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(); } |