[llvm] r236079 - Check that we have a valid PointerType element type before calling get()

Filipe Cabecinhas me at filcab.net
Tue Apr 28 19:27:28 PDT 2015


Author: filcab
Date: Tue Apr 28 21:27:28 2015
New Revision: 236079

URL: http://llvm.org/viewvc/llvm-project?rev=236079&view=rev
Log:
Check that we have a valid PointerType element type before calling get()

Same as r236073 but for PointerType.

Bug found with AFL fuzz.

Added:
    llvm/trunk/test/Bitcode/Inputs/invalid-pointer-element-type.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=236079&r1=236078&r2=236079&view=diff
==============================================================================
--- llvm/trunk/lib/Bitcode/Reader/BitcodeReader.cpp (original)
+++ llvm/trunk/lib/Bitcode/Reader/BitcodeReader.cpp Tue Apr 28 21:27:28 2015
@@ -1360,7 +1360,8 @@ std::error_code BitcodeReader::ParseType
       if (Record.size() == 2)
         AddressSpace = Record[1];
       ResultTy = getTypeByID(Record[0]);
-      if (!ResultTy)
+      if (!ResultTy ||
+          !PointerType::isValidElementType(ResultTy))
         return Error("Invalid type");
       ResultTy = PointerType::get(ResultTy, AddressSpace);
       break;

Added: llvm/trunk/test/Bitcode/Inputs/invalid-pointer-element-type.bc
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Bitcode/Inputs/invalid-pointer-element-type.bc?rev=236079&view=auto
==============================================================================
Binary files llvm/trunk/test/Bitcode/Inputs/invalid-pointer-element-type.bc (added) and llvm/trunk/test/Bitcode/Inputs/invalid-pointer-element-type.bc Tue Apr 28 21:27:28 2015 differ

Modified: llvm/trunk/test/Bitcode/invalid.test
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Bitcode/invalid.test?rev=236079&r1=236078&r2=236079&view=diff
==============================================================================
--- llvm/trunk/test/Bitcode/invalid.test (original)
+++ llvm/trunk/test/Bitcode/invalid.test Tue Apr 28 21:27:28 2015
@@ -103,6 +103,8 @@ RUN: not llvm-dis -disable-output %p/Inp
 RUN:   FileCheck --check-prefix=ELEMENT-TYPE %s
 RUN: not llvm-dis -disable-output %p/Inputs/invalid-vector-element-type.bc 2>&1 | \
 RUN:   FileCheck --check-prefix=ELEMENT-TYPE %s
+RUN: not llvm-dis -disable-output %p/Inputs/invalid-pointer-element-type.bc 2>&1 | \
+RUN:   FileCheck --check-prefix=ELEMENT-TYPE %s
 
 ELEMENT-TYPE: Invalid type
 





More information about the llvm-commits mailing list