panic if hash returns an error

Add a sanity check that the interface contract is honoured.
This commit is contained in:
Michael Eischer 2021-01-29 22:12:51 +01:00
parent 51b7e3119b
commit 7c1903e1ee
4 changed files with 16 additions and 4 deletions

View file

@ -91,7 +91,10 @@ func (be *MemoryBackend) Save(ctx context.Context, h restic.Handle, rd restic.Re
beHash := be.Hasher()
// must never fail according to interface
_, _ = beHash.Write(buf)
_, err = beHash.Write(buf)
if err != nil {
panic(err)
}
if !bytes.Equal(beHash.Sum(nil), rd.Hash()) {
return errors.Errorf("invalid file hash or content, got %s expected %s",
base64.RawStdEncoding.EncodeToString(beHash.Sum(nil)),

View file

@ -547,7 +547,10 @@ func (s *Suite) TestSave(t *testing.T) {
if b.Hasher() != nil {
beHasher := b.Hasher()
// must never fail according to interface
_, _ = beHasher.Write(data)
_, err := beHasher.Write(data)
if err != nil {
panic(err)
}
beHash = beHasher.Sum(nil)
}
err = b.Save(context.TODO(), h, errorCloser{

View file

@ -56,7 +56,10 @@ func NewByteReader(buf []byte, hasher hash.Hash) *ByteReader {
var hash []byte
if hasher != nil {
// must never fail according to interface
_, _ = hasher.Write(buf)
_, err := hasher.Write(buf)
if err != nil {
panic(err)
}
hash = hasher.Sum(nil)
}
return &ByteReader{

View file

@ -54,7 +54,10 @@ func TestFileReader(t *testing.T) {
var hash []byte
if hasher != nil {
// must never fail according to interface
_, _ = hasher.Write(buf)
_, err := hasher.Write(buf)
if err != nil {
panic(err)
}
hash = hasher.Sum(nil)
}
rd, err := NewFileReader(f, hash)