Skip to content

Commit 41fd6d6

Browse files
authored
Merge pull request #614 from CosmWasm/mergify/bp/release/1.5/pr-612
Fix unchecked flag (backport #612)
2 parents 57f3591 + 23df6a3 commit 41fd6d6

File tree

2 files changed

+24
-1
lines changed

2 files changed

+24
-1
lines changed

internal/api/lib.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ func StoreCodeUnchecked(cache Cache, wasm []byte) ([]byte, error) {
7373
w := makeView(wasm)
7474
defer runtime.KeepAlive(wasm)
7575
errmsg := uninitializedUnmanagedVector()
76-
checksum, err := C.store_code(cache.ptr, w, cbool(true), cbool(true), &errmsg)
76+
checksum, err := C.store_code(cache.ptr, w, cbool(false), cbool(true), &errmsg)
7777
if err != nil {
7878
return nil, errorWithMessage(err, errmsg)
7979
}

internal/api/lib_test.go

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package api
22

33
import (
4+
"bytes"
45
"crypto/sha256"
56
"encoding/hex"
67
"encoding/json"
@@ -142,6 +143,28 @@ func TestStoreCodeUnchecked(t *testing.T) {
142143
require.Equal(t, wasm, code)
143144
}
144145

146+
func TestStoreCodeUncheckedWorksWithInvalidWasm(t *testing.T) {
147+
cache, cleanup := withCache(t)
148+
defer cleanup()
149+
150+
wasm, err := os.ReadFile("../../testdata/hackatom.wasm")
151+
require.NoError(t, err)
152+
153+
// Look for "interface_version_8" in the wasm file and replace it with "interface_version_9".
154+
// This makes the wasm file invalid.
155+
wasm = bytes.Replace(wasm, []byte("interface_version_8"), []byte("interface_version_9"), 1)
156+
157+
// StoreCode should fail
158+
_, err = StoreCode(cache, wasm, true)
159+
require.ErrorContains(t, err, "Wasm contract has unknown interface_version_* marker export")
160+
161+
// StoreCodeUnchecked should not fail
162+
checksum, err := StoreCodeUnchecked(cache, wasm)
163+
require.NoError(t, err)
164+
expectedChecksum := sha256.Sum256(wasm)
165+
assert.Equal(t, expectedChecksum[:], checksum)
166+
}
167+
145168
func TestPin(t *testing.T) {
146169
cache, cleanup := withCache(t)
147170
defer cleanup()

0 commit comments

Comments
 (0)