|
6 | 6 | "encoding/json" |
7 | 7 | "errors" |
8 | 8 | "fmt" |
| 9 | + "strings" |
9 | 10 |
|
10 | 11 | "github.com/tendermint/tendermint/crypto" |
11 | 12 | "github.com/tendermint/tendermint/crypto/encoding/amino" |
@@ -71,12 +72,21 @@ func AccAddressFromHex(address string) (addr AccAddress, err error) { |
71 | 72 |
|
72 | 73 | // AccAddressFromBech32 creates an AccAddress from a Bech32 string. |
73 | 74 | func AccAddressFromBech32(address string) (addr AccAddress, err error) { |
| 75 | + if len(strings.TrimSpace(address)) == 0 { |
| 76 | + return AccAddress{}, nil |
| 77 | + } |
| 78 | + |
74 | 79 | bech32PrefixAccAddr := GetConfig().GetBech32AccountAddrPrefix() |
| 80 | + |
75 | 81 | bz, err := GetFromBech32(address, bech32PrefixAccAddr) |
76 | 82 | if err != nil { |
77 | 83 | return nil, err |
78 | 84 | } |
79 | 85 |
|
| 86 | + if len(bz) != AddrLen { |
| 87 | + return nil, errors.New("Incorrect address length") |
| 88 | + } |
| 89 | + |
80 | 90 | return AccAddress(bz), nil |
81 | 91 | } |
82 | 92 |
|
@@ -141,7 +151,12 @@ func (aa AccAddress) Bytes() []byte { |
141 | 151 |
|
142 | 152 | // String implements the Stringer interface. |
143 | 153 | func (aa AccAddress) String() string { |
| 154 | + if aa.Empty() { |
| 155 | + return "" |
| 156 | + } |
| 157 | + |
144 | 158 | bech32PrefixAccAddr := GetConfig().GetBech32AccountAddrPrefix() |
| 159 | + |
145 | 160 | bech32Addr, err := bech32.ConvertAndEncode(bech32PrefixAccAddr, aa.Bytes()) |
146 | 161 | if err != nil { |
147 | 162 | panic(err) |
@@ -187,12 +202,21 @@ func ValAddressFromHex(address string) (addr ValAddress, err error) { |
187 | 202 |
|
188 | 203 | // ValAddressFromBech32 creates a ValAddress from a Bech32 string. |
189 | 204 | func ValAddressFromBech32(address string) (addr ValAddress, err error) { |
| 205 | + if len(strings.TrimSpace(address)) == 0 { |
| 206 | + return ValAddress{}, nil |
| 207 | + } |
| 208 | + |
190 | 209 | bech32PrefixValAddr := GetConfig().GetBech32ValidatorAddrPrefix() |
| 210 | + |
191 | 211 | bz, err := GetFromBech32(address, bech32PrefixValAddr) |
192 | 212 | if err != nil { |
193 | 213 | return nil, err |
194 | 214 | } |
195 | 215 |
|
| 216 | + if len(bz) != AddrLen { |
| 217 | + return nil, errors.New("Incorrect address length") |
| 218 | + } |
| 219 | + |
196 | 220 | return ValAddress(bz), nil |
197 | 221 | } |
198 | 222 |
|
@@ -258,7 +282,12 @@ func (va ValAddress) Bytes() []byte { |
258 | 282 |
|
259 | 283 | // String implements the Stringer interface. |
260 | 284 | func (va ValAddress) String() string { |
| 285 | + if va.Empty() { |
| 286 | + return "" |
| 287 | + } |
| 288 | + |
261 | 289 | bech32PrefixValAddr := GetConfig().GetBech32ValidatorAddrPrefix() |
| 290 | + |
262 | 291 | bech32Addr, err := bech32.ConvertAndEncode(bech32PrefixValAddr, va.Bytes()) |
263 | 292 | if err != nil { |
264 | 293 | panic(err) |
@@ -304,12 +333,21 @@ func ConsAddressFromHex(address string) (addr ConsAddress, err error) { |
304 | 333 |
|
305 | 334 | // ConsAddressFromBech32 creates a ConsAddress from a Bech32 string. |
306 | 335 | func ConsAddressFromBech32(address string) (addr ConsAddress, err error) { |
| 336 | + if len(strings.TrimSpace(address)) == 0 { |
| 337 | + return ConsAddress{}, nil |
| 338 | + } |
| 339 | + |
307 | 340 | bech32PrefixConsAddr := GetConfig().GetBech32ConsensusAddrPrefix() |
| 341 | + |
308 | 342 | bz, err := GetFromBech32(address, bech32PrefixConsAddr) |
309 | 343 | if err != nil { |
310 | 344 | return nil, err |
311 | 345 | } |
312 | 346 |
|
| 347 | + if len(bz) != AddrLen { |
| 348 | + return nil, errors.New("Incorrect address length") |
| 349 | + } |
| 350 | + |
313 | 351 | return ConsAddress(bz), nil |
314 | 352 | } |
315 | 353 |
|
@@ -380,7 +418,12 @@ func (ca ConsAddress) Bytes() []byte { |
380 | 418 |
|
381 | 419 | // String implements the Stringer interface. |
382 | 420 | func (ca ConsAddress) String() string { |
| 421 | + if ca.Empty() { |
| 422 | + return "" |
| 423 | + } |
| 424 | + |
383 | 425 | bech32PrefixConsAddr := GetConfig().GetBech32ConsensusAddrPrefix() |
| 426 | + |
384 | 427 | bech32Addr, err := bech32.ConvertAndEncode(bech32PrefixConsAddr, ca.Bytes()) |
385 | 428 | if err != nil { |
386 | 429 | panic(err) |
|
0 commit comments