ResponseEndBlock: ensure Address matches PubKey if provided

This commit is contained in:
Ethan Buchman 2018-06-06 16:12:14 -07:00
parent 8be27494bb
commit 6b8613b3e7

View File

@ -1,6 +1,7 @@
package state package state
import ( import (
"bytes"
"fmt" "fmt"
fail "github.com/ebuchman/fail-test" fail "github.com/ebuchman/fail-test"
@ -278,6 +279,16 @@ func updateValidators(currentSet *types.ValidatorSet, updates []abci.Validator)
} }
address := pubkey.Address() address := pubkey.Address()
// If the app provided an address too, it must match.
// This is just a sanity check.
if len(v.Address) > 0 {
if !bytes.Equal(address, v.Address) {
return fmt.Errorf("Validator.Address (%X) does not match PubKey.Address (%X)",
v.Address, address)
}
}
power := int64(v.Power) power := int64(v.Power)
// mind the overflow from int64 // mind the overflow from int64
if power < 0 { if power < 0 {