From f740b2fb23f1309ddd4b6dfc2496d9acf19ce506 Mon Sep 17 00:00:00 2001 From: Michael Eischer Date: Sat, 30 Jan 2021 00:15:20 +0100 Subject: [PATCH 1/2] mem: check upload length before storing upload --- internal/backend/mem/mem_backend.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/internal/backend/mem/mem_backend.go b/internal/backend/mem/mem_backend.go index 950ae122d..719ca46a5 100644 --- a/internal/backend/mem/mem_backend.go +++ b/internal/backend/mem/mem_backend.go @@ -81,14 +81,14 @@ func (be *MemoryBackend) Save(ctx context.Context, h restic.Handle, rd restic.Re return err } - be.data[h] = buf - debug.Log("saved %v bytes at %v", len(buf), h) - // sanity check if int64(len(buf)) != rd.Length() { return errors.Errorf("wrote %d bytes instead of the expected %d bytes", len(buf), rd.Length()) } + be.data[h] = buf + debug.Log("saved %v bytes at %v", len(buf), h) + return ctx.Err() } From e0867c968204bc3c18fc413bb24594eae7b959a5 Mon Sep 17 00:00:00 2001 From: Michael Eischer Date: Fri, 29 Jan 2021 22:52:26 +0100 Subject: [PATCH 2/2] backend: try to cleanup test leftovers --- internal/backend/test/tests.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/internal/backend/test/tests.go b/internal/backend/test/tests.go index a35b75e5a..ae9b58677 100644 --- a/internal/backend/test/tests.go +++ b/internal/backend/test/tests.go @@ -577,13 +577,15 @@ func (s *Suite) TestSaveError(t *testing.T) { }() length := rand.Intn(1<<23) + 200000 - data := test.Random(23, length) + data := test.Random(24, length) var id restic.ID copy(id[:], data) // test that incomplete uploads fail h := restic.Handle{Type: restic.PackFile, Name: id.String()} err := b.Save(context.TODO(), h, &incompleteByteReader{ByteReader: *restic.NewByteReader(data)}) + // try to delete possible leftovers + _ = s.delayedRemove(t, b, h) if err == nil { t.Fatal("incomplete upload did not fail") }