From 7c1903e1ee9788f6d7d1f94da4a3074cb1619ca6 Mon Sep 17 00:00:00 2001 From: Michael Eischer Date: Fri, 29 Jan 2021 22:12:51 +0100 Subject: [PATCH] panic if hash returns an error Add a sanity check that the interface contract is honoured. --- internal/backend/mem/mem_backend.go | 5 ++++- internal/backend/test/tests.go | 5 ++++- internal/restic/rewind_reader.go | 5 ++++- internal/restic/rewind_reader_test.go | 5 ++++- 4 files changed, 16 insertions(+), 4 deletions(-) diff --git a/internal/backend/mem/mem_backend.go b/internal/backend/mem/mem_backend.go index 983976519..8dae5d21d 100644 --- a/internal/backend/mem/mem_backend.go +++ b/internal/backend/mem/mem_backend.go @@ -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)), diff --git a/internal/backend/test/tests.go b/internal/backend/test/tests.go index ebb209a3e..75e5ffeb5 100644 --- a/internal/backend/test/tests.go +++ b/internal/backend/test/tests.go @@ -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{ diff --git a/internal/restic/rewind_reader.go b/internal/restic/rewind_reader.go index 20339f222..c27724e02 100644 --- a/internal/restic/rewind_reader.go +++ b/internal/restic/rewind_reader.go @@ -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{ diff --git a/internal/restic/rewind_reader_test.go b/internal/restic/rewind_reader_test.go index 0e15ee686..b553cdfb0 100644 --- a/internal/restic/rewind_reader_test.go +++ b/internal/restic/rewind_reader_test.go @@ -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)