Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions trie/bintrie/hashed_node.go
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,9 @@ func (h HashedNode) GetValuesAtStem(_ []byte, _ NodeResolverFn) ([][]byte, error
}

func (h HashedNode) InsertValuesAtStem(stem []byte, values [][]byte, resolver NodeResolverFn, depth int) (BinaryNode, error) {
if depth >= StemSize*8 {
return nil, errors.New("InsertValuesAtStem resolve error: node too deep")
}
// Step 1: Generate the path for this node's position in the tree
path, err := keyToPath(depth, stem)
if err != nil {
Expand Down
5 changes: 4 additions & 1 deletion trie/bintrie/internal_node.go
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ type InternalNode struct {

// GetValuesAtStem retrieves the group of values located at the given stem key.
func (bt *InternalNode) GetValuesAtStem(stem []byte, resolver NodeResolverFn) ([][]byte, error) {
if bt.depth > 31*8 {
if bt.depth >= StemSize*8 {
return nil, errors.New("node too deep")
}

Expand Down Expand Up @@ -134,6 +134,9 @@ func (bt *InternalNode) Hash() common.Hash {
// Already-existing values will be overwritten.
func (bt *InternalNode) InsertValuesAtStem(stem []byte, values [][]byte, resolver NodeResolverFn, depth int) (BinaryNode, error) {
var err error
if bt.depth >= StemSize*8 {
return nil, errors.New("node too deep")
}
bit := stem[bt.depth/8] >> (7 - (bt.depth % 8)) & 1
if bit == 0 {
if bt.left == nil {
Expand Down
Loading