aboutsummaryrefslogtreecommitdiffstats
path: root/eth/api.go
diff options
context:
space:
mode:
authorBenoit Verkindt <benoit.verkindt@gmail.com>2017-12-06 23:42:16 +0800
committerFelix Lange <fjl@users.noreply.github.com>2017-12-06 23:42:16 +0800
commiteab2201f808bbe1ef08a504f86cf41dd03aa979c (patch)
treefe56296ef420ad1b7061f05514caf155b35dcd31 /eth/api.go
parente85b68ef53e80eb66c7ab394c57e9eb146a60b91 (diff)
downloadgo-tangerine-eab2201f808bbe1ef08a504f86cf41dd03aa979c.tar.gz
go-tangerine-eab2201f808bbe1ef08a504f86cf41dd03aa979c.tar.zst
go-tangerine-eab2201f808bbe1ef08a504f86cf41dd03aa979c.zip
eth: return rlp-decoded values from debug_storageRangeAt (#15476)
Fixes #15196
Diffstat (limited to 'eth/api.go')
-rw-r--r--eth/api.go12
1 files changed, 8 insertions, 4 deletions
diff --git a/eth/api.go b/eth/api.go
index 12448a6a1..a907c3649 100644
--- a/eth/api.go
+++ b/eth/api.go
@@ -615,14 +615,18 @@ func (api *PrivateDebugAPI) StorageRangeAt(ctx context.Context, blockHash common
if st == nil {
return StorageRangeResult{}, fmt.Errorf("account %x doesn't exist", contractAddress)
}
- return storageRangeAt(st, keyStart, maxResult), nil
+ return storageRangeAt(st, keyStart, maxResult)
}
-func storageRangeAt(st state.Trie, start []byte, maxResult int) StorageRangeResult {
+func storageRangeAt(st state.Trie, start []byte, maxResult int) (StorageRangeResult, error) {
it := trie.NewIterator(st.NodeIterator(start))
result := StorageRangeResult{Storage: storageMap{}}
for i := 0; i < maxResult && it.Next(); i++ {
- e := storageEntry{Value: common.BytesToHash(it.Value)}
+ _, content, _, err := rlp.Split(it.Value)
+ if err != nil {
+ return StorageRangeResult{}, err
+ }
+ e := storageEntry{Value: common.BytesToHash(content)}
if preimage := st.GetKey(it.Key); preimage != nil {
preimage := common.BytesToHash(preimage)
e.Key = &preimage
@@ -634,7 +638,7 @@ func storageRangeAt(st state.Trie, start []byte, maxResult int) StorageRangeResu
next := common.BytesToHash(it.Key)
result.NextKey = &next
}
- return result
+ return result, nil
}
// GetModifiedAccountsByumber returns all accounts that have changed between the