From e0d24cc84a81d236daf0bbf783037c8c8c24d814 Mon Sep 17 00:00:00 2001 From: Jon Skeet Date: Fri, 11 Aug 2017 10:14:24 +0100 Subject: Detect invalid tags with a field number of 0 in C# Previously we only rejected the tag if the tag itself was 0, i.e. field=0, type=varint. The type doesn't matter: field 0 is always invalid. This removes the last of the C# conformance failures. --- csharp/src/Google.Protobuf/CodedInputStream.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'csharp/src/Google.Protobuf/CodedInputStream.cs') diff --git a/csharp/src/Google.Protobuf/CodedInputStream.cs b/csharp/src/Google.Protobuf/CodedInputStream.cs index 84f90a25..abd352b9 100644 --- a/csharp/src/Google.Protobuf/CodedInputStream.cs +++ b/csharp/src/Google.Protobuf/CodedInputStream.cs @@ -373,9 +373,9 @@ namespace Google.Protobuf lastTag = ReadRawVarint32(); } - if (lastTag == 0) + if (WireFormat.GetTagFieldNumber(lastTag) == 0) { - // If we actually read zero, that's not a valid tag. + // If we actually read a tag with a field of 0, that's not a valid tag. throw InvalidProtocolBufferException.InvalidTag(); } return lastTag; -- cgit v1.2.3