summaryrefslogtreecommitdiffstats
path: root/llvm
diff options
context:
space:
mode:
Diffstat (limited to 'llvm')
-rw-r--r--llvm/lib/Bitcode/Reader/BitcodeReader.cpp4
-rw-r--r--llvm/test/Bitcode/Inputs/invalid-type-table-forward-ref.bcbin0 -> 452 bytes
2 files changed, 3 insertions, 1 deletions
diff --git a/llvm/lib/Bitcode/Reader/BitcodeReader.cpp b/llvm/lib/Bitcode/Reader/BitcodeReader.cpp
index 9e27225df79..c3589bce398 100644
--- a/llvm/lib/Bitcode/Reader/BitcodeReader.cpp
+++ b/llvm/lib/Bitcode/Reader/BitcodeReader.cpp
@@ -1095,8 +1095,10 @@ std::error_code BitcodeReader::ParseTypeTableBody() {
if (NumRecords >= TypeList.size())
return Error("Invalid TYPE table");
+ if (TypeList[NumRecords])
+ return Error(
+ "Invalid TYPE table: Only named structs can be forward referenced");
assert(ResultTy && "Didn't read a type?");
- assert(!TypeList[NumRecords] && "Already read type?");
TypeList[NumRecords++] = ResultTy;
}
}
diff --git a/llvm/test/Bitcode/Inputs/invalid-type-table-forward-ref.bc b/llvm/test/Bitcode/Inputs/invalid-type-table-forward-ref.bc
new file mode 100644
index 00000000000..4594efefd6c
--- /dev/null
+++ b/llvm/test/Bitcode/Inputs/invalid-type-table-forward-ref.bc
Binary files differ
OpenPOWER on IntegriCloud