diff options
author | Filipe Cabecinhas <me@filcab.net> | 2015-06-03 00:05:30 +0000 |
---|---|---|
committer | Filipe Cabecinhas <me@filcab.net> | 2015-06-03 00:05:30 +0000 |
commit | 8e42190d2038d129f9ebec8e83a5380cf0fcff30 (patch) | |
tree | f35eb27f3dee7763bb98cf4c27ed1f411fe3c78d /llvm/lib/Bitcode | |
parent | 9aa3ab30a9ccd1aaf6ffb62d03785c887a6e4c81 (diff) | |
download | bcm5719-llvm-8e42190d2038d129f9ebec8e83a5380cf0fcff30.tar.gz bcm5719-llvm-8e42190d2038d129f9ebec8e83a5380cf0fcff30.zip |
[BitcodeReader] Check vector size before trying to create a VectorType
Bug found with AFL fuzz
llvm-svn: 238891
Diffstat (limited to 'llvm/lib/Bitcode')
-rw-r--r-- | llvm/lib/Bitcode/Reader/BitcodeReader.cpp | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/llvm/lib/Bitcode/Reader/BitcodeReader.cpp b/llvm/lib/Bitcode/Reader/BitcodeReader.cpp index 4044ac80f20..9e5e46aae0b 100644 --- a/llvm/lib/Bitcode/Reader/BitcodeReader.cpp +++ b/llvm/lib/Bitcode/Reader/BitcodeReader.cpp @@ -1497,6 +1497,8 @@ std::error_code BitcodeReader::ParseTypeTableBody() { case bitc::TYPE_CODE_VECTOR: // VECTOR: [numelts, eltty] if (Record.size() < 2) return Error("Invalid record"); + if (Record[0] == 0) + return Error("Invalid vector length"); ResultTy = getTypeByID(Record[1]); if (!ResultTy || !StructType::isValidElementType(ResultTy)) return Error("Invalid type"); |