diff --git a/db/db_versioned.go b/db/db_versioned.go index f414f6073b..532d647df1 100644 --- a/db/db_versioned.go +++ b/db/db_versioned.go @@ -105,6 +105,9 @@ func (b *BoltDBVersioned) Put(version uint64, ns string, key, value []byte) erro if !b.db.IsReady() { return ErrDBNotStarted } + if len(value) == 0 { + return errors.Wrap(ErrInvalid, "not allowed to write nil value") + } // check namespace vn, err := b.checkNamespace(ns) if err != nil { diff --git a/db/db_versioned_test.go b/db/db_versioned_test.go index 3980f70410..3ce8599671 100644 --- a/db/db_versioned_test.go +++ b/db/db_versioned_test.go @@ -52,6 +52,8 @@ func TestVersionedDB(t *testing.T) { vn, err = db.checkNamespace(_bucket1) r.NoError(err) r.EqualValues(len(_k2), vn.keyLen) + // cannot write nil value + r.Equal(ErrInvalid, errors.Cause(db.Put(1, _bucket1, _k2, nil))) km, err = db.checkKey(_bucket1, _k2) r.Zero(km.firstVersion) r.Zero(km.lastVersion)