forked from OSchip/llvm-project
[Bitcode] Check minimum size of constant GEP record
Checking this early, because we may end up reading up to two records before the operands.
This commit is contained in:
parent
73a961b9cc
commit
72248712e5
|
@ -2676,6 +2676,8 @@ Error BitcodeReader::parseConstants() {
|
|||
case bitc::CST_CODE_CE_GEP: // [ty, n x operands]
|
||||
case bitc::CST_CODE_CE_GEP_WITH_INRANGE_INDEX: { // [ty, flags, n x
|
||||
// operands]
|
||||
if (Record.size() < 2)
|
||||
return error("Constant GEP record must have at least two elements");
|
||||
unsigned OpNum = 0;
|
||||
Type *PointeeType = nullptr;
|
||||
if (BitCode == bitc::CST_CODE_CE_GEP_WITH_INRANGE_INDEX ||
|
||||
|
|
Binary file not shown.
|
@ -219,7 +219,12 @@ VOID-CONSTANT-TYPE: Invalid constant type
|
|||
RUN: not llvm-dis -disable-output %p/Inputs/invalid-gep-no-operands.bc 2>&1 | \
|
||||
RUN: FileCheck --check-prefix=GEP-NO-OPERANDS %s
|
||||
|
||||
GEP-NO-OPERANDS: Invalid gep with no operands
|
||||
GEP-NO-OPERANDS: Constant GEP record must have at least two elements
|
||||
|
||||
RUN: not llvm-dis -disable-output %p/Inputs/invalid-constant-gep.bc 2>&1 | \
|
||||
RUN: FileCheck --check-prefix=INVALID-CONSTANT-GEP %s
|
||||
|
||||
INVALID-CONSTANT-GEP: Constant GEP record must have at least two elements
|
||||
|
||||
RUN: not llvm-dis -disable-output %p/Inputs/invalid-nonpointer-storeatomic.bc 2>&1 | \
|
||||
RUN: FileCheck --check-prefix=NONPOINTER-STOREATOMIC %s
|
||||
|
|
Loading…
Reference in New Issue