Skip to content

Commit 7c8f1e8

Browse files
authored
Merge pull request #1697 from CosmWasm/1693_default_version
Prevent empty channel version
2 parents 62d91d9 + fc549d4 commit 7c8f1e8

File tree

2 files changed

+30
-10
lines changed

2 files changed

+30
-10
lines changed

x/wasm/ibc.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,9 @@ func (i IBCHandler) OnChanOpenInit(
7575
return "", err
7676
}
7777
if acceptedVersion == "" { // accept incoming version when nothing returned by contract
78+
if version == "" {
79+
return "", types.ErrEmpty.Wrap("version")
80+
}
7881
acceptedVersion = version
7982
}
8083

x/wasm/ibc_integration_test.go

Lines changed: 27 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -22,21 +22,31 @@ import (
2222
)
2323

2424
func TestOnChanOpenInitVersion(t *testing.T) {
25-
const startVersion = "v1"
25+
const v1 = "v1"
2626
specs := map[string]struct {
27-
contractRsp *wasmvmtypes.IBC3ChannelOpenResponse
28-
expVersion string
27+
startVersion string
28+
contractRsp *wasmvmtypes.IBC3ChannelOpenResponse
29+
expVersion string
30+
expErr bool
2931
}{
3032
"different version": {
31-
contractRsp: &wasmvmtypes.IBC3ChannelOpenResponse{Version: "v2"},
32-
expVersion: "v2",
33+
startVersion: v1,
34+
contractRsp: &wasmvmtypes.IBC3ChannelOpenResponse{Version: "v2"},
35+
expVersion: "v2",
3336
},
3437
"no response": {
35-
expVersion: startVersion,
38+
startVersion: v1,
39+
expVersion: v1,
3640
},
3741
"empty result": {
38-
contractRsp: &wasmvmtypes.IBC3ChannelOpenResponse{},
39-
expVersion: startVersion,
42+
startVersion: v1,
43+
contractRsp: &wasmvmtypes.IBC3ChannelOpenResponse{},
44+
expVersion: v1,
45+
},
46+
"empty versions should fail": {
47+
startVersion: "",
48+
contractRsp: &wasmvmtypes.IBC3ChannelOpenResponse{},
49+
expErr: true,
4050
},
4151
}
4252
for name, spec := range specs {
@@ -63,10 +73,17 @@ func TestOnChanOpenInitVersion(t *testing.T) {
6373
coordinator.CreateConnections(path)
6474
path.EndpointA.ChannelConfig = &ibctesting.ChannelConfig{
6575
PortID: contractInfo.IBCPortID,
66-
Version: startVersion,
76+
Version: spec.startVersion,
6777
Order: channeltypes.UNORDERED,
6878
}
69-
require.NoError(t, path.EndpointA.ChanOpenInit())
79+
// when
80+
gotErr := path.EndpointA.ChanOpenInit()
81+
// then
82+
if spec.expErr {
83+
require.Error(t, gotErr)
84+
return
85+
}
86+
require.NoError(t, gotErr)
7087
assert.Equal(t, spec.expVersion, path.EndpointA.ChannelConfig.Version)
7188
})
7289
}

0 commit comments

Comments
 (0)