Merge PR #5620: Fix nil pointer deref in distribution tax/rewward validation helpers
This commit is contained in:
parent
dd2d1c2573
commit
6cbf634ad5
|
@ -63,7 +63,8 @@ of `types.CommitID`. During `Commit` of the root multi-store, `lastCommitInfo` i
|
|||
and is only flushed to disk if it is a snapshot version. During `Query` of the root multi-store, if the request height
|
||||
is the latest height, we'll use the store's `lastCommitInfo`. Otherwise, we fetch `commitInfo` from disk.
|
||||
* (x/bank) [\#5531](https://github.com/cosmos/cosmos-sdk/issues/5531) Added missing amount event to MsgMultiSend, emitted for each output.
|
||||
* (client) [\#5618](https://github.com/cosmos/cosmos-sdk/pull/5618) Fix crash on the client when the verifier is not set.
|
||||
* (client) [\#5618](https://github.com/cosmos/cosmos-sdk/pull/5618) Fix crash on the client when the verifier is not set.
|
||||
* (x/distribution) [\#5620](https://github.com/cosmos/cosmos-sdk/pull/5620) Fix nil pointer deref in distribution tax/rewward validation helpers.
|
||||
|
||||
### State Machine Breaking
|
||||
|
||||
|
|
|
@ -92,6 +92,9 @@ func validateCommunityTax(i interface{}) error {
|
|||
return fmt.Errorf("invalid parameter type: %T", i)
|
||||
}
|
||||
|
||||
if v.IsNil() {
|
||||
return fmt.Errorf("community tax must be not nil")
|
||||
}
|
||||
if v.IsNegative() {
|
||||
return fmt.Errorf("community tax must be positive: %s", v)
|
||||
}
|
||||
|
@ -108,6 +111,9 @@ func validateBaseProposerReward(i interface{}) error {
|
|||
return fmt.Errorf("invalid parameter type: %T", i)
|
||||
}
|
||||
|
||||
if v.IsNil() {
|
||||
return fmt.Errorf("base proposer reward must be not nil")
|
||||
}
|
||||
if v.IsNegative() {
|
||||
return fmt.Errorf("base proposer reward must be positive: %s", v)
|
||||
}
|
||||
|
@ -124,6 +130,9 @@ func validateBonusProposerReward(i interface{}) error {
|
|||
return fmt.Errorf("invalid parameter type: %T", i)
|
||||
}
|
||||
|
||||
if v.IsNil() {
|
||||
return fmt.Errorf("bonus proposer reward must be not nil")
|
||||
}
|
||||
if v.IsNegative() {
|
||||
return fmt.Errorf("bonus proposer reward must be positive: %s", v)
|
||||
}
|
||||
|
|
|
@ -0,0 +1,34 @@
|
|||
package types
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/require"
|
||||
|
||||
sdk "github.com/cosmos/cosmos-sdk/types"
|
||||
)
|
||||
|
||||
func Test_validateAuxFuncs(t *testing.T) {
|
||||
type args struct {
|
||||
i interface{}
|
||||
}
|
||||
tests := []struct {
|
||||
name string
|
||||
args args
|
||||
wantErr bool
|
||||
}{
|
||||
{"wrong type", args{10.5}, true},
|
||||
{"nil Int pointer", args{sdk.Dec{}}, true},
|
||||
{"negative", args{sdk.NewDec(-1)}, true},
|
||||
{"one dec", args{sdk.NewDec(1)}, false},
|
||||
{"two dec", args{sdk.NewDec(2)}, true},
|
||||
}
|
||||
for _, tt := range tests {
|
||||
tt = tt
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
require.Equal(t, tt.wantErr, validateCommunityTax(tt.args.i) != nil)
|
||||
require.Equal(t, tt.wantErr, validateBaseProposerReward(tt.args.i) != nil)
|
||||
require.Equal(t, tt.wantErr, validateBonusProposerReward(tt.args.i) != nil)
|
||||
})
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue