From afe713a7cd6cf3485fad9b7dccbdbcc1daee7762 Mon Sep 17 00:00:00 2001 From: Filipe Cabecinhas Date: Sun, 5 Jun 2016 18:43:33 +0000 Subject: [PATCH] [BitCode] Make sure storeatomic's argument is an actual PointerType git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271850 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Bitcode/Reader/BitcodeReader.cpp | 1 + .../Inputs/invalid-nonpointer-storeatomic.bc | Bin 0 -> 452 bytes test/Bitcode/invalid.test | 5 +++++ 3 files changed, 6 insertions(+) create mode 100644 test/Bitcode/Inputs/invalid-nonpointer-storeatomic.bc diff --git a/lib/Bitcode/Reader/BitcodeReader.cpp b/lib/Bitcode/Reader/BitcodeReader.cpp index c66b60681e5..4eda9d6c9ad 100644 --- a/lib/Bitcode/Reader/BitcodeReader.cpp +++ b/lib/Bitcode/Reader/BitcodeReader.cpp @@ -5259,6 +5259,7 @@ std::error_code BitcodeReader::parseFunctionBody(Function *F) { unsigned OpNum = 0; Value *Val, *Ptr; if (getValueTypePair(Record, OpNum, NextValueNo, Ptr) || + !isa(Ptr->getType()) || (BitCode == bitc::FUNC_CODE_INST_STOREATOMIC ? getValueTypePair(Record, OpNum, NextValueNo, Val) : popValue(Record, OpNum, NextValueNo, diff --git a/test/Bitcode/Inputs/invalid-nonpointer-storeatomic.bc b/test/Bitcode/Inputs/invalid-nonpointer-storeatomic.bc new file mode 100644 index 0000000000000000000000000000000000000000..042fea51a5973b193765cc1a079209359c2380a6 GIT binary patch literal 452 zcmZ>AK5$Qwhk+rFfq{X$Nr8b0NDBcmd!zD1#}h1`Yyw7>lNeigR9QJB}F$U~Vl5k}h%XN#7@Jx&eml@;v8GYWa0 zG4Q_?;QP|RXUyXycj%z(xrH)m2CQIZ&C+L>ZBIDc_AuK5%_vl0U;vpXwn3rS#U+?k zM9&`6j5d{ lF$U6`1)D*{A)sgZK)wdK3t_e>(4?zrK$B7+CIKaZ002b8VqE|L literal 0 HcmV?d00001 diff --git a/test/Bitcode/invalid.test b/test/Bitcode/invalid.test index 321c7a9fc77..2c2ae8f326a 100644 --- a/test/Bitcode/invalid.test +++ b/test/Bitcode/invalid.test @@ -222,3 +222,8 @@ RUN: not llvm-dis -disable-output %p/Inputs/invalid-gep-no-operands.bc 2>&1 | \ RUN: FileCheck --check-prefix=GEP-NO-OPERANDS %s GEP-NO-OPERANDS: Invalid gep with no operands + +RUN: not llvm-dis -disable-output %p/Inputs/invalid-nonpointer-storeatomic.bc 2>&1 | \ +RUN: FileCheck --check-prefix=NONPOINTER-STOREATOMIC %s + +NONPOINTER-STOREATOMIC: Invalid record