Merge pull request #1478 from nspcc-dev/neo3/get_storage_items_fix
core: copy storage item key in simple.GetStorageItems
This commit is contained in:
commit
737306aacf
2 changed files with 6 additions and 1 deletions
|
@ -413,7 +413,10 @@ func (dao *Simple) GetStorageItemsWithPrefix(id int32, prefix []byte) (map[strin
|
|||
}
|
||||
|
||||
// Cut prefix and hash.
|
||||
siMap[string(k[len(lookupKey):])] = si
|
||||
// Must copy here, #1468.
|
||||
key := make([]byte, len(k[len(lookupKey):]))
|
||||
copy(key, k[len(lookupKey):])
|
||||
siMap[string(key)] = si
|
||||
}
|
||||
dao.Store.Seek(lookupKey, saveToMap)
|
||||
if err != nil {
|
||||
|
|
|
@ -38,6 +38,8 @@ type (
|
|||
Get([]byte) ([]byte, error)
|
||||
Put(k, v []byte) error
|
||||
PutBatch(Batch) error
|
||||
// Seek can guarantee that provided key (k) and value (v) are the only valid until the next call to f.
|
||||
// Key and value slices should not be modified.
|
||||
Seek(k []byte, f func(k, v []byte))
|
||||
Close() error
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue