diff options
author | OpenShift Merge Robot <openshift-merge-robot@users.noreply.github.com> | 2022-03-28 15:09:51 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-03-28 15:09:51 +0200 |
commit | aeae59804990e98fea6cd64388c99a1d863a7cb5 (patch) | |
tree | 4ab4cb6cf2a5cd98a7e893a84b4b08fb8ac691ad /vendor/google.golang.org/protobuf/internal/impl/decode.go | |
parent | 7df6849f167a4d81feba6f61e9f5bbb084adce62 (diff) | |
parent | 76614c46132e28daa4baa2e6787c4be64f7a9ac8 (diff) | |
download | podman-aeae59804990e98fea6cd64388c99a1d863a7cb5.tar.gz podman-aeae59804990e98fea6cd64388c99a1d863a7cb5.tar.bz2 podman-aeae59804990e98fea6cd64388c99a1d863a7cb5.zip |
Merge pull request #13592 from containers/dependabot/go_modules/google.golang.org/protobuf-1.28.0
build(deps): bump google.golang.org/protobuf from 1.27.1 to 1.28.0
Diffstat (limited to 'vendor/google.golang.org/protobuf/internal/impl/decode.go')
-rw-r--r-- | vendor/google.golang.org/protobuf/internal/impl/decode.go | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/vendor/google.golang.org/protobuf/internal/impl/decode.go b/vendor/google.golang.org/protobuf/internal/impl/decode.go index 949dc49a6..c65b0325c 100644 --- a/vendor/google.golang.org/protobuf/internal/impl/decode.go +++ b/vendor/google.golang.org/protobuf/internal/impl/decode.go @@ -18,6 +18,7 @@ import ( ) var errDecode = errors.New("cannot parse invalid wire-format data") +var errRecursionDepth = errors.New("exceeded maximum recursion depth") type unmarshalOptions struct { flags protoiface.UnmarshalInputFlags @@ -25,6 +26,7 @@ type unmarshalOptions struct { FindExtensionByName(field protoreflect.FullName) (protoreflect.ExtensionType, error) FindExtensionByNumber(message protoreflect.FullName, field protoreflect.FieldNumber) (protoreflect.ExtensionType, error) } + depth int } func (o unmarshalOptions) Options() proto.UnmarshalOptions { @@ -44,6 +46,7 @@ func (o unmarshalOptions) IsDefault() bool { var lazyUnmarshalOptions = unmarshalOptions{ resolver: preg.GlobalTypes, + depth: protowire.DefaultRecursionLimit, } type unmarshalOutput struct { @@ -62,6 +65,7 @@ func (mi *MessageInfo) unmarshal(in piface.UnmarshalInput) (piface.UnmarshalOutp out, err := mi.unmarshalPointer(in.Buf, p, 0, unmarshalOptions{ flags: in.Flags, resolver: in.Resolver, + depth: in.Depth, }) var flags piface.UnmarshalOutputFlags if out.initialized { @@ -82,6 +86,10 @@ var errUnknown = errors.New("unknown") func (mi *MessageInfo) unmarshalPointer(b []byte, p pointer, groupTag protowire.Number, opts unmarshalOptions) (out unmarshalOutput, err error) { mi.init() + opts.depth-- + if opts.depth < 0 { + return out, errRecursionDepth + } if flags.ProtoLegacy && mi.isMessageSet { return unmarshalMessageSet(mi, b, p, opts) } |