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?ds=sidebyside 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);