Index: lib/Frontend/SerializedDiagnosticReader.cpp =================================================================== --- lib/Frontend/SerializedDiagnosticReader.cpp +++ lib/Frontend/SerializedDiagnosticReader.cpp @@ -27,6 +27,9 @@ llvm::BitstreamCursor Stream(**Buffer); Optional BlockInfo; + if (Stream.AtEndOfStream()) + return SDError::InvalidSignature; + // Sniff for the signature. if (Stream.Read(8) != 'D' || Stream.Read(8) != 'I' || Index: test/Index/read-empty-diags.test =================================================================== --- /dev/null +++ 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