aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Bitcode/Reader/BitcodeReader.cpp
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/lib/Bitcode/Reader/BitcodeReader.cpp
parentcc6e894587ec5c4b995dc88d672556369bf833c7 (diff)
downloadllvm-d0858e1037abb3d5239ee34bcbb61521f6d82d8e.zip
llvm-d0858e1037abb3d5239ee34bcbb61521f6d82d8e.tar.gz
llvm-d0858e1037abb3d5239ee34bcbb61521f6d82d8e.tar.bz2
[bitcode reader] Fix an assert on invalid type tables
Bug found with afl-fuzz llvm-svn: 227566
Diffstat (limited to 'llvm/lib/Bitcode/Reader/BitcodeReader.cpp')
-rw-r--r--llvm/lib/Bitcode/Reader/BitcodeReader.cpp4
1 files changed, 3 insertions, 1 deletions
diff --git a/llvm/lib/Bitcode/Reader/BitcodeReader.cpp b/llvm/lib/Bitcode/Reader/BitcodeReader.cpp
index 9e27225..c3589bc 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;
}
}