From: Tom Clegg Date: Tue, 22 Sep 2015 16:01:25 +0000 (-0400) Subject: 7329: Fix infinite loop in Compare when reading an empty file. X-Git-Tag: 1.1.0~1349 X-Git-Url: https://git.arvados.org/arvados.git/commitdiff_plain/783a6278efb607b201df2781942a0b1c6a385929 7329: Fix infinite loop in Compare when reading an empty file. refs #7329 --- 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)