From: Filipe Cabecinhas Date: Wed, 27 May 2015 01:05:40 +0000 (+0000) Subject: [BitcodeReader] Change assert to report_fatal_error X-Git-Url: http://plrg.eecs.uci.edu/git/?a=commitdiff_plain;h=1c0b496636bb76a56fa4606f9f1f6bc41d5f6163;p=oota-llvm.git [BitcodeReader] Change assert to report_fatal_error It can be triggered by user input. Bug found with AFL fuzz. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@238272 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Bitcode/Reader/BitcodeReader.cpp b/lib/Bitcode/Reader/BitcodeReader.cpp index 95cf51f1419..f6d5ccc1a59 100644 --- a/lib/Bitcode/Reader/BitcodeReader.cpp +++ b/lib/Bitcode/Reader/BitcodeReader.cpp @@ -785,7 +785,8 @@ Constant *BitcodeReaderValueList::getConstantFwdRef(unsigned Idx, resize(Idx + 1); if (Value *V = ValuePtrs[Idx]) { - assert(Ty == V->getType() && "Type mismatch in constant table!"); + if (Ty != V->getType()) + report_fatal_error("Type mismatch in constant table!"); return cast(V); } diff --git a/test/Bitcode/Inputs/invalid-fwdref-type-mismatch-2.bc b/test/Bitcode/Inputs/invalid-fwdref-type-mismatch-2.bc new file mode 100644 index 00000000000..8e38340eede Binary files /dev/null and b/test/Bitcode/Inputs/invalid-fwdref-type-mismatch-2.bc differ diff --git a/test/Bitcode/invalid.test b/test/Bitcode/invalid.test index 5cdd25387b6..eb7f979d574 100644 --- a/test/Bitcode/invalid.test +++ b/test/Bitcode/invalid.test @@ -99,6 +99,11 @@ RUN: FileCheck --check-prefix=FWDREF-TYPE %s FWDREF-TYPE: Invalid record +RUN: not llvm-dis -disable-output %p/Inputs/invalid-fwdref-type-mismatch-2.bc 2>&1 | \ +RUN: FileCheck --check-prefix=FWDREF-TYPE-MISMATCH %s + +FWDREF-TYPE-MISMATCH: Type mismatch in constant table! + RUN: not llvm-dis -disable-output %p/Inputs/invalid-array-element-type.bc 2>&1 | \ RUN: FileCheck --check-prefix=ELEMENT-TYPE %s RUN: not llvm-dis -disable-output %p/Inputs/invalid-vector-element-type.bc 2>&1 | \