Skip to content

Commit

Permalink
Merge pull request CosmWasm#15 from osmosis-labs/nicolas/fix-code-hash
Browse files Browse the repository at this point in the history
Check code hash before gzipping the file
  • Loading branch information
nicolaslara committed Feb 27, 2023
2 parents ff3da48 + e9fb69a commit c90195b
Show file tree
Hide file tree
Showing 4 changed files with 54 additions and 19 deletions.
7 changes: 6 additions & 1 deletion x/wasm/client/cli/genesis_msg.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import (
"encoding/json"
"errors"
"fmt"
"os"

"github.com/cosmos/cosmos-sdk/client"
"github.com/cosmos/cosmos-sdk/client/flags"
Expand Down Expand Up @@ -53,7 +54,11 @@ func GenesisStoreCodeCmd(defaultNodeHome string, genesisMutator GenesisMutator)
return err
}

msg, err := parseStoreCodeArgs(args[0], senderAddr, cmd.Flags())
wasmFile, err := os.ReadFile(args[0])
if err != nil {
return err
}
msg, err := parseStoreCodeArgs(wasmFile, senderAddr, cmd.Flags())
if err != nil {
return err
}
Expand Down
30 changes: 19 additions & 11 deletions x/wasm/client/cli/gov_tx.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import (
"crypto/sha256"
"fmt"
"net/url"
"os"
"strconv"
"strings"

Expand Down Expand Up @@ -34,7 +35,15 @@ func ProposalStoreCodeCmd() *cobra.Command {
return err
}

src, err := parseStoreCodeArgs(args[0], clientCtx.FromAddress, cmd.Flags())
wasmFile, err := os.ReadFile(args[0])
if err != nil {
return err
}
source, builder, codeHash, err := parseVerificationFlags(wasmFile, cmd.Flags())
if err != nil {
return err
}
src, err := parseStoreCodeArgs(wasmFile, clientCtx.FromAddress, cmd.Flags())
if err != nil {
return err
}
Expand All @@ -51,10 +60,6 @@ func ProposalStoreCodeCmd() *cobra.Command {
return err
}

source, builder, codeHash, err := parseVerificationFlags(src.WASMByteCode, cmd.Flags())
if err != nil {
return err
}
content := types.StoreCodeProposal{
Title: proposalTitle,
Description: proposalDescr,
Expand Down Expand Up @@ -211,7 +216,15 @@ func ProposalStoreAndInstantiateContractCmd() *cobra.Command {
return err
}

src, err := parseStoreCodeArgs(args[0], clientCtx.FromAddress, cmd.Flags())
wasmFile, err := os.ReadFile(args[0])
if err != nil {
return err
}
source, builder, codeHash, err := parseVerificationFlags(wasmFile, cmd.Flags())
if err != nil {
return err
}
src, err := parseStoreCodeArgs(wasmFile, clientCtx.FromAddress, cmd.Flags())
if err != nil {
return err
}
Expand All @@ -228,11 +241,6 @@ func ProposalStoreAndInstantiateContractCmd() *cobra.Command {
return err
}

source, builder, codeHash, err := parseVerificationFlags(src.WASMByteCode, cmd.Flags())
if err != nil {
return err
}

amountStr, err := cmd.Flags().GetString(flagAmount)
if err != nil {
return fmt.Errorf("amount: %s", err)
Expand Down
22 changes: 22 additions & 0 deletions x/wasm/client/cli/gov_tx_test.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package cli

import (
sdk "github.com/cosmos/cosmos-sdk/types"
"os"
"testing"

Expand Down Expand Up @@ -156,3 +157,24 @@ func TestParseCodeInfoFlags(t *testing.T) {
})
}
}

func TestChecksumGzipInteraction(t *testing.T) {
correctSource := "https://github.com/CosmWasm/wasmd/blob/main/x/wasm/keeper/testdata/hackatom.wasm"
correctBuilderRef := "cosmwasm/workspace-optimizer:0.12.9"

fileName := "../../keeper/testdata/hackatom.wasm"
wasmFile, err := os.ReadFile(fileName)
require.NoError(t, err)

checksumStr := "13a1fc994cc6d1c81b746ee0c0ff6f90043875e0bf1d9be6b7d779fc978dc2a5"
args := []string{"--code-source-url=" + correctSource, "--builder=" + correctBuilderRef, "--code-hash=" + checksumStr}

flags := ProposalStoreCodeCmd().Flags()
require.NoError(t, flags.Parse(args))
_, _, _, err = parseVerificationFlags(wasmFile, flags)
require.NoError(t, err)
msg, err := parseStoreCodeArgs(wasmFile, sdk.AccAddress{}, flags)
require.NoError(t, err)
_, _, _, err = parseVerificationFlags(msg.WASMByteCode, flags)
require.Error(t, err)
}
14 changes: 7 additions & 7 deletions x/wasm/client/cli/tx.go
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,11 @@ func StoreCodeCmd() *cobra.Command {
if err != nil {
return err
}
msg, err := parseStoreCodeArgs(args[0], clientCtx.GetFromAddress(), cmd.Flags())
wasmFile, err := os.ReadFile(args[0])
if err != nil {
return err
}
msg, err := parseStoreCodeArgs(wasmFile, clientCtx.GetFromAddress(), cmd.Flags())
if err != nil {
return err
}
Expand All @@ -101,13 +105,9 @@ func StoreCodeCmd() *cobra.Command {
return cmd
}

func parseStoreCodeArgs(file string, sender sdk.AccAddress, flags *flag.FlagSet) (types.MsgStoreCode, error) {
wasm, err := os.ReadFile(file)
if err != nil {
return types.MsgStoreCode{}, err
}

func parseStoreCodeArgs(wasm []byte, sender sdk.AccAddress, flags *flag.FlagSet) (types.MsgStoreCode, error) {
// gzip the wasm file
var err error
if ioutils.IsWasm(wasm) {
wasm, err = ioutils.GzipIt(wasm)

Expand Down

0 comments on commit c90195b

Please sign in to comment.