swarm/shed: pass a new byte slice copy to index decode functions

This commit is contained in:
Janos Guljas 2018-12-20 15:34:31 +01:00
parent ecb4c19c6d
commit 2ea47256d3

View file

@ -249,11 +249,13 @@ func (f Index) Iterate(fn IndexIterFunc, options *IterateOptions) (err error) {
if !bytes.HasPrefix(key, prefix) {
break
}
keyItem, err := f.decodeKeyFunc(key)
// create a copy of key byte slice not to share leveldb underlaying slice array
keyItem, err := f.decodeKeyFunc(append([]byte(nil), key...))
if err != nil {
return err
}
valueItem, err := f.decodeValueFunc(keyItem, it.Value())
// create a copy of value byte slice not to share leveldb underlaying slice array
valueItem, err := f.decodeValueFunc(keyItem, append([]byte(nil), it.Value()...))
if err != nil {
return err
}