[BitCode] Don't allow constants of void type.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271848 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Filipe Cabecinhas
2016-06-05 18:43:17 +00:00
parent 0b28fbb3a5
commit 780fc2c617
3 changed files with 8 additions and 0 deletions

View File

@@ -2868,6 +2868,7 @@ std::error_code BitcodeReader::parseConstants() {
// Read a record.
Record.clear();
Type *VoidType = Type::getVoidTy(Context);
Value *V = nullptr;
unsigned BitCode = Stream.readRecord(Entry.ID, Record);
switch (BitCode) {
@@ -2880,6 +2881,8 @@ std::error_code BitcodeReader::parseConstants() {
return error("Invalid record");
if (Record[0] >= TypeList.size() || !TypeList[Record[0]])
return error("Invalid record");
if (TypeList[Record[0]] == VoidType)
return error("Invalid constant type");
CurTy = TypeList[Record[0]];
continue; // Skip the ValueList manipulation.
case bitc::CST_CODE_NULL: // NULL