From c3a77d626831b4ffe37ed4f8640e67e70ad5b220 Mon Sep 17 00:00:00 2001 From: Felix Lange Date: Thu, 29 Sep 2016 16:51:32 +0200 Subject: 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. --- trie/trie.go | 3 +++ 1 file changed, 3 insertions(+) (limited to 'trie/trie.go') diff --git a/trie/trie.go b/trie/trie.go index 55481f4f7..55598af98 100644 --- a/trie/trie.go +++ b/trie/trie.go @@ -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 -- cgit v1.2.3