From 07d5168d29d22e47ab927b368f12d2f63343e1c2 Mon Sep 17 00:00:00 2001 From: mmsqe Date: Sat, 4 Jan 2025 00:54:32 +0800 Subject: [PATCH] fix(x/auth/tx): avoid panic from intoAnyV2 when v1.PublicKey is optional (#23148) --- CHANGELOG.md | 1 + x/auth/tx/builder.go | 8 +++++--- x/auth/tx/builder_test.go | 15 +++++++++++++++ 3 files changed, 21 insertions(+), 3 deletions(-) create mode 100644 x/auth/tx/builder_test.go diff --git a/CHANGELOG.md b/CHANGELOG.md index 80acb6b962..f0d68750ee 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -51,6 +51,7 @@ Every module contains its own CHANGELOG.md. Please refer to the module you are i ### Bug Fixes * (query) [23002](https://github.com/cosmos/cosmos-sdk/pull/23002) Fix collection filtered pagination. +* (x/auth/tx) [#23148](https://github.com/cosmos/cosmos-sdk/pull/23148) Avoid panic from intoAnyV2 when v1.PublicKey is optional. ### API Breaking Changes diff --git a/x/auth/tx/builder.go b/x/auth/tx/builder.go index 2b1c866e8e..17b23f8b64 100644 --- a/x/auth/tx/builder.go +++ b/x/auth/tx/builder.go @@ -293,9 +293,11 @@ func intoV2SignerInfo(v1s []*tx.SignerInfo) []*txv1beta1.SignerInfo { modeInfoV2 := new(txv1beta1.ModeInfo) intoV2ModeInfo(v1.ModeInfo, modeInfoV2) v2 := &txv1beta1.SignerInfo{ - PublicKey: intoAnyV2([]*codectypes.Any{v1.PublicKey})[0], - ModeInfo: modeInfoV2, - Sequence: v1.Sequence, + ModeInfo: modeInfoV2, + Sequence: v1.Sequence, + } + if v1.PublicKey != nil { + v2.PublicKey = intoAnyV2([]*codectypes.Any{v1.PublicKey})[0] } v2s[i] = v2 } diff --git a/x/auth/tx/builder_test.go b/x/auth/tx/builder_test.go new file mode 100644 index 0000000000..9667f42d7b --- /dev/null +++ b/x/auth/tx/builder_test.go @@ -0,0 +1,15 @@ +package tx + +import ( + "testing" + + any "github.com/cosmos/gogoproto/types/any" + "github.com/stretchr/testify/require" + + "github.com/cosmos/cosmos-sdk/types/tx" +) + +func TestIntoV2SignerInfo(t *testing.T) { + require.NotNil(t, intoV2SignerInfo([]*tx.SignerInfo{{}})) + require.NotNil(t, intoV2SignerInfo([]*tx.SignerInfo{{PublicKey: &any.Any{}}})) +}