Skip to content

Commit 13bc4a0

Browse files
Merge pull request from GHSA-j658-c98j-fww4
Co-authored-by: Carlos Rodriguez <crodveg@gmail.com>
1 parent 0a81a52 commit 13bc4a0

File tree

3 files changed

+15
-0
lines changed

3 files changed

+15
-0
lines changed

modules/apps/transfer/keeper/relay.go

+4
Original file line numberDiff line numberDiff line change
@@ -239,6 +239,10 @@ func (k Keeper) OnRecvPacket(ctx sdk.Context, packet channeltypes.Packet, data t
239239
}
240240
token := sdk.NewCoin(denom, transferAmount)
241241

242+
if k.bankKeeper.BlockedAddr(receiver) {
243+
return sdkerrors.Wrapf(sdkerrors.ErrUnauthorized, "%s is not allowed to receive funds", receiver)
244+
}
245+
242246
// unescrow tokens
243247
escrowAddress := types.GetEscrowAddress(packet.GetDestPort(), packet.GetDestChannel())
244248
if err := k.bankKeeper.SendCoins(ctx, escrowAddress, receiver, sdk.NewCoins(token)); err != nil {

modules/apps/transfer/keeper/relay_test.go

+10
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,16 @@ func (suite *KeeperTestSuite) TestOnRecvPacket() {
167167
{"tries to unescrow more tokens than allowed", func() {
168168
amount = sdk.NewInt(1000000)
169169
}, true, false},
170+
171+
// - coin being sent to module address on chainA
172+
{"failure: receive on module account", func() {
173+
receiver = suite.chainA.GetSimApp().AccountKeeper.GetModuleAddress(types.ModuleName).String()
174+
}, false, false},
175+
176+
// - coin being sent back to original chain (chainB) to module address
177+
{"failure: receive on module account on source chain", func() {
178+
receiver = suite.chainB.GetSimApp().AccountKeeper.GetModuleAddress(types.ModuleName).String()
179+
}, true, false},
170180
}
171181

172182
for _, tc := range testCases {

modules/apps/transfer/types/expected_keepers.go

+1
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ type BankKeeper interface {
2323
BurnCoins(ctx sdk.Context, moduleName string, amt sdk.Coins) error
2424
SendCoinsFromModuleToAccount(ctx sdk.Context, senderModule string, recipientAddr sdk.AccAddress, amt sdk.Coins) error
2525
SendCoinsFromAccountToModule(ctx sdk.Context, senderAddr sdk.AccAddress, recipientModule string, amt sdk.Coins) error
26+
BlockedAddr(addr sdk.AccAddress) bool
2627
}
2728

2829
// ICS4Wrapper defines the expected ICS4Wrapper for middleware

0 commit comments

Comments
 (0)