From: Pino Toscano Date: Sat, 19 Dec 2015 11:06:53 +0000 (+0100) Subject: CopyFile: avoid failing on EOF on some systems X-Git-Tag: 1.1.6~16 X-Git-Url: https://git.saurik.com/apt.git/commitdiff_plain/c0b271edc2f6d9e5dea5ac82fbc911f0e3adfa7a CopyFile: avoid failing on EOF on some systems On EOF, ToRead will be 0, which might trigger on some systems (e.g. on the Hurd) an error due to the invalid byte count passed to write(). The whole loop already checks for ToRead != 0, so perform the writing step only when there was actual data read. Closes: #808381 --- diff --git a/apt-pkg/contrib/fileutl.cc b/apt-pkg/contrib/fileutl.cc index 86ca82cff..1ffa407bc 100644 --- a/apt-pkg/contrib/fileutl.cc +++ b/apt-pkg/contrib/fileutl.cc @@ -165,7 +165,7 @@ bool CopyFile(FileFd &From,FileFd &To) unsigned long long ToRead = 0; do { if (From.Read(Buf.get(),BufSize, &ToRead) == false || - To.Write(Buf.get(),ToRead) == false) + (ToRead > 0 && To.Write(Buf.get(),ToRead) == false)) return false; } while (ToRead != 0);