using System; using System.IO; namespace ProtoCSStruct { /// /// Thrown when a protocol message being parsed is invalid in some way, /// e.g. it contains a malformed varint or a negative byte length. /// public sealed class InvalidProtocolBufferException : IOException { public InvalidProtocolBufferException(string message) : base(message) { } public InvalidProtocolBufferException(string message, Exception innerException) : base(message, innerException) { } public static InvalidProtocolBufferException MoreDataAvailable() { return new InvalidProtocolBufferException( "Completed reading a message while more data was available in the stream."); } public static InvalidProtocolBufferException TruncatedMessage() { return new InvalidProtocolBufferException( "While parsing a protocol message, the input ended unexpectedly " + "in the middle of a field. This could mean either than the " + "input has been truncated or that an embedded message " + "misreported its own length."); } public static InvalidProtocolBufferException NegativeSize() { return new InvalidProtocolBufferException( "CodedInputStream encountered an embedded string or message " + "which claimed to have negative size."); } public static InvalidProtocolBufferException MalformedVarint() { return new InvalidProtocolBufferException( "CodedInputStream encountered a malformed varint."); } /// /// Creates an exception for an error condition of an invalid tag being encountered. /// public static InvalidProtocolBufferException InvalidTag() { return new InvalidProtocolBufferException( "Protocol message contained an invalid tag (zero)."); } public static InvalidProtocolBufferException InvalidBase64(Exception innerException) { return new InvalidProtocolBufferException("Invalid base64 data", innerException); } public static InvalidProtocolBufferException InvalidEndTag() { return new InvalidProtocolBufferException( "Protocol message end-group tag did not match expected tag."); } public static InvalidProtocolBufferException RecursionLimitExceeded() { return new InvalidProtocolBufferException( "Protocol message had too many levels of nesting. May be malicious. " + "Use CodedInputStream.SetRecursionLimit() to increase the depth limit."); } public static InvalidProtocolBufferException JsonRecursionLimitExceeded() { return new InvalidProtocolBufferException( "Protocol message had too many levels of nesting. May be malicious. " + "Use JsonParser.Settings to increase the depth limit."); } public static InvalidProtocolBufferException SizeLimitExceeded() { return new InvalidProtocolBufferException( "Protocol message was too large. May be malicious. " + "Use CodedInputStream.SetSizeLimit() to increase the size limit."); } public static InvalidProtocolBufferException InvalidMessageStreamTag() { return new InvalidProtocolBufferException( "Stream of protocol messages had invalid tag. Expected tag is length-delimited field 1."); } public static InvalidProtocolBufferException StringLengthToLong() { return new InvalidProtocolBufferException( "protocol messages StringLengthToLong."); } } }