proto, internal/impl: reject invalid field numbers in map items

Change-Id: I44a44a36538f6f8b94078b43711d865edb6244f5
Reviewed-on: https://go-review.googlesource.com/c/protobuf/+/212257
Reviewed-by: Herbie Ong <herbie@google.com>
diff --git a/proto/decode.go b/proto/decode.go
index 07ae467..03ea7ec 100644
--- a/proto/decode.go
+++ b/proto/decode.go
@@ -183,6 +183,9 @@
 		if n < 0 {
 			return 0, wire.ParseError(n)
 		}
+		if num > wire.MaxValidNumber {
+			return 0, errors.New("invalid field number")
+		}
 		b = b[n:]
 		err = errUnknown
 		switch num {