trie: fix delete bug for values contained in fullNode

Delete crashed if a fullNode contained a valueNode directly. This bug is
very unlikely to occur with SecureTrie, but can happen with regular
tries. This commit also introduces a randomised test which triggers all
trie operations, which should prevent such bugs in the future.

Credit for finding this bug goes to Github user @rjl493456442.
This commit is contained in:
Felix Lange
2016-09-29 16:51:32 +02:00
parent ba8c4c6b1a
commit c3a77d6268
2 changed files with 127 additions and 35 deletions

View File

@ -377,6 +377,9 @@ func (t *Trie) delete(n node, prefix, key []byte) (bool, node, error) {
// n still contains at least two values and cannot be reduced.
return true, n, nil
case valueNode:
return true, nil, nil
case nil:
return false, nil, nil