From cebee0b8fa62a31d37bb1a18c5fb9991cfbeaab5 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Thu, 5 Oct 2017 20:40:02 +0200 Subject: [PATCH] cache: Refuse to cache truncated files --- internal/cache/file.go | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/internal/cache/file.go b/internal/cache/file.go index 33836fc03..5041ad965 100644 --- a/internal/cache/file.go +++ b/internal/cache/file.go @@ -111,13 +111,21 @@ func (c *Cache) Save(h restic.Handle, rd io.Reader) error { return err } - if _, err = io.Copy(f, rd); err != nil { + n, err := io.Copy(f, rd) + if err != nil { _ = f.Close() _ = c.Remove(h) return errors.Wrap(err, "Copy") } + if n <= crypto.Extension { + _ = f.Close() + _ = c.Remove(h) + return errors.Errorf("trying to cache truncated file %v", h) + } + if err = f.Close(); err != nil { + _ = c.Remove(h) return errors.Wrap(err, "Close") }