fix: Fix MsgExec not verifying the validity of nested messages (#12184)
This commit is contained in:
@@ -60,9 +60,9 @@ func NewCmdGrantAuthorization() *cobra.Command {
|
||||
fmt.Sprintf(`create a new grant authorization to an address to execute a transaction on your behalf:
|
||||
|
||||
Examples:
|
||||
$ %s tx %s grant cosmos1skjw.. send %s --spend-limit=1000stake --from=cosmos1skl..
|
||||
$ %s tx %s grant cosmos1skjw.. send --spend-limit=1000stake --from=cosmos1skl..
|
||||
$ %s tx %s grant cosmos1skjw.. generic --msg-type=/cosmos.gov.v1.MsgVote --from=cosmos1sk..
|
||||
`, version.AppName, authz.ModuleName, bank.SendAuthorization{}.MsgTypeURL(), version.AppName, authz.ModuleName),
|
||||
`, version.AppName, authz.ModuleName, version.AppName, authz.ModuleName),
|
||||
),
|
||||
Args: cobra.ExactArgs(2),
|
||||
RunE: func(cmd *cobra.Command, args []string) error {
|
||||
|
||||
@@ -219,6 +219,16 @@ func (msg MsgExec) ValidateBasic() error {
|
||||
return sdkerrors.ErrInvalidRequest.Wrapf("messages cannot be empty")
|
||||
}
|
||||
|
||||
msgs, err := msg.GetMessages()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
for _, msg := range msgs {
|
||||
if err = msg.ValidateBasic(); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
|
||||
@@ -30,6 +30,13 @@ func TestMsgExecAuthorized(t *testing.T) {
|
||||
}{
|
||||
{"nil grantee address", nil, []sdk.Msg{}, false},
|
||||
{"zero-messages test: should fail", grantee, []sdk.Msg{}, false},
|
||||
{"invalid nested msg", grantee, []sdk.Msg{
|
||||
&banktypes.MsgSend{
|
||||
Amount: sdk.NewCoins(sdk.NewInt64Coin("steak", 2)),
|
||||
FromAddress: "invalid_from_address",
|
||||
ToAddress: grantee.String(),
|
||||
},
|
||||
}, false},
|
||||
{"valid test: msg type", grantee, []sdk.Msg{
|
||||
&banktypes.MsgSend{
|
||||
Amount: sdk.NewCoins(sdk.NewInt64Coin("steak", 2)),
|
||||
|
||||
Reference in New Issue
Block a user