summaryrefslogtreecommitdiffstats
path: root/llvm
diff options
context:
space:
mode:
authorFilipe Cabecinhas <me@filcab.net>2015-01-30 10:57:58 +0000
committerFilipe Cabecinhas <me@filcab.net>2015-01-30 10:57:58 +0000
commitd0858e1037abb3d5239ee34bcbb61521f6d82d8e (patch)
tree3650df3b6f06e8a970cf7f8436ea9568edd9725a /llvm
parentcc6e894587ec5c4b995dc88d672556369bf833c7 (diff)
downloadbcm5719-llvm-d0858e1037abb3d5239ee34bcbb61521f6d82d8e.tar.gz
bcm5719-llvm-d0858e1037abb3d5239ee34bcbb61521f6d82d8e.zip
[bitcode reader] Fix an assert on invalid type tables
Bug found with afl-fuzz llvm-svn: 227566
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