From c0b271edc2f6d9e5dea5ac82fbc911f0e3adfa7a Mon Sep 17 00:00:00 2001 From: Pino Toscano Date: Sat, 19 Dec 2015 12:06:53 +0100 Subject: 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 --- apt-pkg/contrib/fileutl.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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); -- cgit v1.2.3-70-g09d2