summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Bitcode/Reader/BitstreamReader.cpp
diff options
context:
space:
mode:
authorFilipe Cabecinhas <me@filcab.net>2015-05-27 00:48:43 +0000
committerFilipe Cabecinhas <me@filcab.net>2015-05-27 00:48:43 +0000
commit8cd99e9a5a13bc3f229dbabc9e8baa7b10568598 (patch)
treea2038d24518a02bc9a7378e455f0f3c75cf9a357 /llvm/lib/Bitcode/Reader/BitstreamReader.cpp
parenta872a476cbfd67126ff07c2227770231c1b1d117 (diff)
downloadbcm5719-llvm-8cd99e9a5a13bc3f229dbabc9e8baa7b10568598.tar.gz
bcm5719-llvm-8cd99e9a5a13bc3f229dbabc9e8baa7b10568598.zip
[BitstreamReader] Make sure the Array operand type is an encoding
Bug found with AFL fuzz. llvm-svn: 238269
Diffstat (limited to 'llvm/lib/Bitcode/Reader/BitstreamReader.cpp')
-rw-r--r--llvm/lib/Bitcode/Reader/BitstreamReader.cpp3
1 files changed, 3 insertions, 0 deletions
diff --git a/llvm/lib/Bitcode/Reader/BitstreamReader.cpp b/llvm/lib/Bitcode/Reader/BitstreamReader.cpp
index f57e077baa0..a103fbdf4a9 100644
--- a/llvm/lib/Bitcode/Reader/BitstreamReader.cpp
+++ b/llvm/lib/Bitcode/Reader/BitstreamReader.cpp
@@ -203,6 +203,9 @@ unsigned BitstreamCursor::readRecord(unsigned AbbrevID,
if (i + 2 != e)
report_fatal_error("Array op not second to last");
const BitCodeAbbrevOp &EltEnc = Abbv->getOperandInfo(++i);
+ if (!EltEnc.isEncoding())
+ report_fatal_error(
+ "Array element type has to be an encoding of a type");
if (EltEnc.getEncoding() == BitCodeAbbrevOp::Array ||
EltEnc.getEncoding() == BitCodeAbbrevOp::Blob)
report_fatal_error("Array element type can't be an Array or a Blob");
OpenPOWER on IntegriCloud