Index: lib/Frontend/SerializedDiagnosticReader.cpp =================================================================== --- lib/Frontend/SerializedDiagnosticReader.cpp +++ lib/Frontend/SerializedDiagnosticReader.cpp @@ -91,7 +91,8 @@ return Cursor::BlockEnd; case llvm::bitc::DEFINE_ABBREV: - Stream.ReadAbbrevRecord(); + if (Stream.ReadAbbrevRecord()) + return SDError::InvalidDiagnostics; continue; case llvm::bitc::UNABBREV_RECORD: Index: lib/Serialization/ASTReader.cpp =================================================================== --- lib/Serialization/ASTReader.cpp +++ lib/Serialization/ASTReader.cpp @@ -1340,7 +1340,10 @@ Cursor.JumpToBit(Offset); return false; } - Cursor.ReadAbbrevRecord(); + if (Cursor.ReadAbbrevRecord()) { + Error("malformed abbrev record in AST file"); + return Failure; + } } } @@ -4262,7 +4265,8 @@ InputFilesCursor.JumpToBit(Offset); break; } - InputFilesCursor.ReadAbbrevRecord(); + if (InputFilesCursor.ReadAbbrevRecord()) + return true; } }