Prechádzať zdrojové kódy

[bitcode reader] Fix an assert on invalid type tables

Bug found with afl-fuzz

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227566 91177308-0d34-0410-b5e6-96231b3b80d8
Filipe Cabecinhas 10 rokov pred
rodič
commit
8cf149dbad

+ 3 - 1
lib/Bitcode/Reader/BitcodeReader.cpp

@@ -1095,8 +1095,10 @@ std::error_code BitcodeReader::ParseTypeTableBody() {
 
     if (NumRecords >= TypeList.size())
       return Error("Invalid TYPE table");
+    if (TypeList[NumRecords])
+      return Error(
+          "Invalid TYPE table: Only named structs can be forward referenced");
     assert(ResultTy && "Didn't read a type?");
-    assert(!TypeList[NumRecords] && "Already read type?");
     TypeList[NumRecords++] = ResultTy;
   }
 }

BIN
test/Bitcode/Inputs/invalid-type-table-forward-ref.bc