From 73c5aba21fcca1bf1f78e94d88920fde6762be9e Mon Sep 17 00:00:00 2001 From: gary rong Date: Fri, 11 Aug 2017 18:41:49 +0800 Subject: [PATCH] ethdb: return copied value from MemDatabase.Get (#14958) --- ethdb/database_test.go | 15 +++++++++++++++ ethdb/memory_database.go | 2 +- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/ethdb/database_test.go b/ethdb/database_test.go index 4740cdaedd..5e4a3ca34a 100644 --- a/ethdb/database_test.go +++ b/ethdb/database_test.go @@ -94,6 +94,21 @@ func testPutGet(db ethdb.Database, t *testing.T) { } } + for _, v := range test_values { + orig, err := db.Get([]byte(v)) + if err != nil { + t.Fatalf("get failed: %v", err) + } + orig[0] = byte(0xff) + data, err := db.Get([]byte(v)) + if err != nil { + t.Fatalf("get failed: %v", err) + } + if !bytes.Equal(data, []byte("?")) { + t.Fatalf("get returned wrong result, got %q expected ?", string(data)) + } + } + for _, v := range test_values { err := db.Delete([]byte(v)) if err != nil { diff --git a/ethdb/memory_database.go b/ethdb/memory_database.go index a2ee2f2ccd..11b0937248 100644 --- a/ethdb/memory_database.go +++ b/ethdb/memory_database.go @@ -50,7 +50,7 @@ func (db *MemDatabase) Get(key []byte) ([]byte, error) { defer db.lock.RUnlock() if entry, ok := db.db[string(key)]; ok { - return entry, nil + return common.CopyBytes(entry), nil } return nil, errors.New("not found") }