dwarfdump: Add some error handling for DWP index sections of the wrong size

llvm-svn: 252843
This commit is contained in:
David Blaikie 2015-11-12 01:41:59 +00:00
parent 5b9bf49c6f
commit 6e9c4f7f0d
1 changed files with 7 additions and 0 deletions

View File

@ -16,6 +16,8 @@ namespace llvm {
bool DWARFUnitIndex::Header::parse(DataExtractor IndexData,
uint32_t *OffsetPtr) {
if (!IndexData.isValidOffsetForDataOfSize(*OffsetPtr, 16))
return false;
Version = IndexData.getU32(OffsetPtr);
NumColumns = IndexData.getU32(OffsetPtr);
NumUnits = IndexData.getU32(OffsetPtr);
@ -32,6 +34,11 @@ bool DWARFUnitIndex::parse(DataExtractor IndexData) {
if (!Header.parse(IndexData, &Offset))
return false;
if (!IndexData.isValidOffsetForDataOfSize(
Offset, Header.NumBuckets * (8 + 4) +
(2 * Header.NumUnits + 1) * 4 * Header.NumColumns))
return false;
Rows = llvm::make_unique<HashRow[]>(Header.NumBuckets);
auto Contribs =
llvm::make_unique<HashRow::SectionContribution *[]>(Header.NumUnits);