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/internal/impl/codec_map.go b/internal/impl/codec_map.go
index 94a1bc4..05d1ecd 100644
--- a/internal/impl/codec_map.go
+++ b/internal/impl/codec_map.go
@@ -5,6 +5,7 @@
package impl
import (
+ "errors"
"reflect"
"sort"
@@ -120,6 +121,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 {
@@ -169,6 +173,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 {