From e9c858d43fd0dd1df2ed411ef04be7b564085ef4 Mon Sep 17 00:00:00 2001 From: James Mills <1290234+prologic@users.noreply.github.com> Date: Sat, 16 Mar 2019 12:16:23 +1000 Subject: [PATCH] Add CRC Checksum checks on reading values back --- bitcask.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/bitcask.go b/bitcask.go index 8427c66..625fb23 100644 --- a/bitcask.go +++ b/bitcask.go @@ -2,6 +2,7 @@ package bitcask import ( "fmt" + "hash/crc32" "io" "io/ioutil" "os" @@ -61,6 +62,11 @@ func (b *Bitcask) Get(key string) ([]byte, error) { return nil, err } + crc := crc32.ChecksumIEEE(e.Value) + if crc != e.CRC { + return nil, fmt.Errorf("error: crc checksum falied %s %d != %d", key, e.CRC, crc) + } + return e.Value, nil }