diff --git a/internal/cache/file.go b/internal/cache/file.go index f232bc7c1..32ad237bf 100644 --- a/internal/cache/file.go +++ b/internal/cache/file.go @@ -63,6 +63,12 @@ func (c *Cache) Load(h restic.Handle, length int, offset int64) (io.ReadCloser, return nil, errors.Errorf("cached file %v is truncated, removing", h) } + if fi.Size() < offset+int64(length) { + _ = f.Close() + _ = c.Remove(h) + return nil, errors.Errorf("cached file %v is too small, removing", h) + } + if offset > 0 { if _, err = f.Seek(offset, io.SeekStart); err != nil { _ = f.Close()