From 783a6278efb607b201df2781942a0b1c6a385929 Mon Sep 17 00:00:00 2001 From: Tom Clegg Date: Tue, 22 Sep 2015 12:01:25 -0400 Subject: [PATCH] 7329: Fix infinite loop in Compare when reading an empty file. refs #7329 --- services/keepstore/volume_unix.go | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/services/keepstore/volume_unix.go b/services/keepstore/volume_unix.go index afae2796bc..6c0f5c4e97 100644 --- a/services/keepstore/volume_unix.go +++ b/services/keepstore/volume_unix.go @@ -122,6 +122,13 @@ func (v *UnixVolume) Compare(loc string, expect []byte) error { bufLen := 1 << 20 if int64(bufLen) > stat.Size() { bufLen = int(stat.Size()) + if bufLen < 1 { + // len(buf)==0 would prevent us from handling + // empty files the same way as non-empty + // files, because reading 0 bytes at a time + // never reaches EOF. + bufLen = 1 + } } cmp := expect buf := make([]byte, bufLen) -- 2.30.2