diff --git a/CHANGELOG.md b/CHANGELOG.md index 36ef5ff3f75b..7b09f7608c97 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -67,6 +67,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ * (export) [#13029](https://github.com/cosmos/cosmos-sdk/pull/13029) Fix exporting the blockParams regression. * [#13046](https://github.com/cosmos/cosmos-sdk/pull/13046) Fix missing return statement in BaseApp.Query. * (store) [#13336](https://github.com/cosmos/cosmos-sdk/pull/13336) Call streaming listeners for deliver tx event, it was removed accidentally, backport #13334. +* (grpc) [#13417](https://github.com/cosmos/cosmos-sdk/pull/13417) fix grpc query panic that could crash the node (backport #13352). ## [v0.46.1](https://github.com/cosmos/cosmos-sdk/releases/tag/v0.46.1) - 2022-08-24 diff --git a/codec/proto_codec.go b/codec/proto_codec.go index c98a9a60d8ab..0b927424f22a 100644 --- a/codec/proto_codec.go +++ b/codec/proto_codec.go @@ -47,14 +47,13 @@ func NewProtoCodec(interfaceRegistry types.InterfaceRegistry) *ProtoCodec { // Marshal implements BinaryMarshaler.Marshal method. // NOTE: this function must be used with a concrete type which // implements proto.Message. For interface please use the codec.MarshalInterface -func (pc *ProtoCodec) Marshal(o gogoproto.Message) ([]byte, error) { +func (pc *ProtoCodec) Marshal(o ProtoMarshaler) ([]byte, error) { // Size() check can catch the typed nil value. - if o == nil || gogoproto.Size(o) == 0 { + if o == nil || o.Size() == 0 { // return empty bytes instead of nil, because nil has special meaning in places like store.Set return []byte{}, nil } - - return gogoproto.Marshal(o) + return o.Marshal() } // MustMarshal implements BinaryMarshaler.MustMarshal method.