This revision was automatically updated to reflect the committed changes. Closed by commit rL307384: [Frontend] Verify that the bitstream is not empty before reading (authored by arphaman).
Changed prior to commit: https://reviews.llvm.org/D35069?vs=105462&id=105612#toc Repository: rL LLVM https://reviews.llvm.org/D35069 Files: cfe/trunk/lib/Frontend/SerializedDiagnosticReader.cpp cfe/trunk/test/Index/Inputs/empty.dia cfe/trunk/test/Index/read-empty-diags.test Index: cfe/trunk/test/Index/read-empty-diags.test =================================================================== --- cfe/trunk/test/Index/read-empty-diags.test +++ cfe/trunk/test/Index/read-empty-diags.test @@ -0,0 +1,2 @@ +// RUN: not c-index-test -read-diagnostics %S/Inputs/empty.dia 2>&1 | FileCheck %s +// CHECK: Trouble deserializing file (Invalid File): Invalid diagnostics signature Index: cfe/trunk/lib/Frontend/SerializedDiagnosticReader.cpp =================================================================== --- cfe/trunk/lib/Frontend/SerializedDiagnosticReader.cpp +++ cfe/trunk/lib/Frontend/SerializedDiagnosticReader.cpp @@ -27,6 +27,9 @@ llvm::BitstreamCursor Stream(**Buffer); Optional<llvm::BitstreamBlockInfo> BlockInfo; + if (Stream.AtEndOfStream()) + return SDError::InvalidSignature; + // Sniff for the signature. if (Stream.Read(8) != 'D' || Stream.Read(8) != 'I' ||
Index: cfe/trunk/test/Index/read-empty-diags.test =================================================================== --- cfe/trunk/test/Index/read-empty-diags.test +++ cfe/trunk/test/Index/read-empty-diags.test @@ -0,0 +1,2 @@ +// RUN: not c-index-test -read-diagnostics %S/Inputs/empty.dia 2>&1 | FileCheck %s +// CHECK: Trouble deserializing file (Invalid File): Invalid diagnostics signature Index: cfe/trunk/lib/Frontend/SerializedDiagnosticReader.cpp =================================================================== --- cfe/trunk/lib/Frontend/SerializedDiagnosticReader.cpp +++ cfe/trunk/lib/Frontend/SerializedDiagnosticReader.cpp @@ -27,6 +27,9 @@ llvm::BitstreamCursor Stream(**Buffer); Optional<llvm::BitstreamBlockInfo> BlockInfo; + if (Stream.AtEndOfStream()) + return SDError::InvalidSignature; + // Sniff for the signature. if (Stream.Read(8) != 'D' || Stream.Read(8) != 'I' ||
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits