Prevent empty addresses list

This commit is contained in:
Alex Peters
2022-09-07 11:59:29 +02:00
parent 2674c53d7b
commit 743c1c34e0
2 changed files with 19 additions and 2 deletions

View File

@@ -44,7 +44,7 @@ func (a AccessType) With(addrs ...sdk.AccAddress) AccessConfig {
bech32Addrs[i] = v.String()
}
if err := assertValidAddresses(bech32Addrs); err != nil {
panic(err)
panic(sdkerrors.Wrap(err, "addresses"))
}
return AccessConfig{Permission: AccessTypeAnyOfAddresses, Addresses: bech32Addrs}
}
@@ -181,12 +181,15 @@ func (a AccessConfig) ValidateBasic() error {
if a.Address != "" {
return ErrInvalid.Wrap("address field set")
}
return assertValidAddresses(a.Addresses)
return sdkerrors.Wrap(assertValidAddresses(a.Addresses), "addresses")
}
return sdkerrors.Wrapf(ErrInvalid, "unknown type: %q", a.Permission)
}
func assertValidAddresses(addrs []string) error {
if len(addrs) == 0 {
return ErrEmpty
}
idx := make(map[string]struct{}, len(addrs))
for _, a := range addrs {
if _, err := sdk.AccAddressFromBech32(a); err != nil {

View File

@@ -110,6 +110,20 @@ func TestValidateParams(t *testing.T) {
},
expErr: true,
},
"reject empty addresses in any of addresses": {
src: Params{
CodeUploadAccess: AccessConfig{Permission: AccessTypeAnyOfAddresses, Addresses: []string{}},
InstantiateDefaultPermission: AccessTypeAnyOfAddresses,
},
expErr: true,
},
"reject addresses not set in any of addresses": {
src: Params{
CodeUploadAccess: AccessConfig{Permission: AccessTypeAnyOfAddresses},
InstantiateDefaultPermission: AccessTypeAnyOfAddresses,
},
expErr: true,
},
"reject invalid address in any of addresses": {
src: Params{
CodeUploadAccess: AccessConfig{Permission: AccessTypeAnyOfAddresses, Addresses: []string{invalidAddress}},