HexBytes formatting; Make computeHashFromAunts more defensive

This commit is contained in:
Jae Kwon 2018-04-03 07:01:08 -07:00
parent 3cd4dcf13b
commit f457435199
2 changed files with 12 additions and 3 deletions

View File

@ -51,3 +51,12 @@ func (bz HexBytes) Bytes() []byte {
func (bz HexBytes) String() string {
return strings.ToUpper(hex.EncodeToString(bz))
}
func (bz HexBytes) Format(s fmt.State, verb rune) {
switch verb {
case 'p':
s.Write([]byte(fmt.Sprintf("%p", bz)))
default:
s.Write([]byte(fmt.Sprintf("%X", []byte(bz))))
}
}

View File

@ -43,9 +43,9 @@ func (sp *SimpleProof) StringIndented(indent string) string {
// Use the leafHash and innerHashes to get the root merkle hash.
// If the length of the innerHashes slice isn't exactly correct, the result is nil.
func computeHashFromAunts(index int, total int, leafHash []byte, innerHashes [][]byte) []byte {
// Recursive impl.
if index >= total {
func computeHashFromAunts(index int, total int, leafHash []byte, innerHashes [][]byte) []byte {
if index >= total || index < 0 || total <= 0 {
return nil
}
switch total {