[BitcodeReader] Make sure abbrev records have at least one operand (record code)

Bug found with AFL fuzz.

llvm-svn: 238265
This commit is contained in:
Filipe Cabecinhas 2015-05-26 23:52:21 +00:00
parent 85fa7d5037
commit bc6a909384
3 changed files with 8 additions and 0 deletions

View File

@ -282,6 +282,9 @@ void BitstreamCursor::ReadAbbrevRecord() {
} else
Abbv->Add(BitCodeAbbrevOp(E));
}
if (Abbv->getNumOperandInfos() == 0)
report_fatal_error("Abbrev record with no operands");
CurAbbrevs.push_back(Abbv);
}

Binary file not shown.

View File

@ -172,3 +172,8 @@ RUN: not llvm-dis -disable-output %p/Inputs/invalid-global-var-comdat-id.bc 2>&1
RUN: FileCheck --check-prefix=INVALID-GVCOMDAT-ID %s
INVALID-GVCOMDAT-ID: Invalid global variable comdat ID
RUN: not llvm-dis -disable-output %p/Inputs/invalid-abbrev-no-operands.bc 2>&1 | \
RUN: FileCheck --check-prefix=ABBREV-NO-OPS %s
ABBREV-NO-OPS: Abbrev record with no operands