[llvm] r271849 - [BitCode] Diagnose GEPs with no indices

Filipe Cabecinhas via llvm-commits llvm-commits at lists.llvm.org
Sun Jun 5 11:43:27 PDT 2016


Author: filcab
Date: Sun Jun  5 13:43:26 2016
New Revision: 271849

URL: http://llvm.org/viewvc/llvm-project?rev=271849&view=rev
Log:
[BitCode] Diagnose GEPs with no indices

Added:
    llvm/trunk/test/Bitcode/Inputs/invalid-gep-no-operands.bc
Modified:
    llvm/trunk/lib/Bitcode/Reader/BitcodeReader.cpp
    llvm/trunk/test/Bitcode/invalid.test

Modified: llvm/trunk/lib/Bitcode/Reader/BitcodeReader.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Bitcode/Reader/BitcodeReader.cpp?rev=271849&r1=271848&r2=271849&view=diff
==============================================================================
--- llvm/trunk/lib/Bitcode/Reader/BitcodeReader.cpp (original)
+++ llvm/trunk/lib/Bitcode/Reader/BitcodeReader.cpp Sun Jun  5 13:43:26 2016
@@ -3090,6 +3090,9 @@ std::error_code BitcodeReader::parseCons
         return error("Explicit gep operator type does not match pointee type "
                      "of pointer operand");
 
+      if (Elts.size() < 1)
+        return error("Invalid gep with no operands");
+
       ArrayRef<Constant *> Indices(Elts.begin() + 1, Elts.end());
       V = ConstantExpr::getGetElementPtr(PointeeType, Elts[0], Indices,
                                          BitCode ==

Added: llvm/trunk/test/Bitcode/Inputs/invalid-gep-no-operands.bc
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Bitcode/Inputs/invalid-gep-no-operands.bc?rev=271849&view=auto
==============================================================================
Binary files llvm/trunk/test/Bitcode/Inputs/invalid-gep-no-operands.bc (added) and llvm/trunk/test/Bitcode/Inputs/invalid-gep-no-operands.bc Sun Jun  5 13:43:26 2016 differ

Modified: llvm/trunk/test/Bitcode/invalid.test
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Bitcode/invalid.test?rev=271849&r1=271848&r2=271849&view=diff
==============================================================================
--- llvm/trunk/test/Bitcode/invalid.test (original)
+++ llvm/trunk/test/Bitcode/invalid.test Sun Jun  5 13:43:26 2016
@@ -217,3 +217,8 @@ RUN: not llvm-dis -disable-output %p/Inp
 RUN:   FileCheck --check-prefix=VOID-CONSTANT-TYPE %s
 
 VOID-CONSTANT-TYPE: Invalid constant type
+
+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




More information about the llvm-commits mailing list