This is the mail archive of the
cygwin-patches
mailing list for the Cygwin project.
Re: [PATCH] pread() returns non-zero if read beyond EOF, because NtReadFile returns EOF status but doesn't set information to 0. Need reset io status block before NtReadFile is called, so that pread() will return 0 if read beyond EOF.
- From: "Xiaofeng Liu via cygwin-patches" <cygwin-patches at cygwin dot com>
- To: cygwin-patches at cygwin dot com, Corinna Vinschen <corinna-cygwin at cygwin dot com>
- Date: Wed, 8 Nov 2017 17:01:52 +0000 (UTC)
- Subject: Re: [PATCH] pread() returns non-zero if read beyond EOF, because NtReadFile returns EOF status but doesn't set information to 0. Need reset io status block before NtReadFile is called, so that pread() will return 0 if read beyond EOF.
- Authentication-results: sourceware.org; auth=none
- References: <1958376489.4046072.1510075992854.ref@mail.yahoo.com> <1958376489.4046072.1510075992854@mail.yahoo.com> <20171108123458.GM18070@calimero.vinschen.de> <20171108124113.GA14994@calimero.vinschen.de>
- Reply-to: Xiaofeng Liu <liuxf09 at yahoo dot com>
Hi Corinna,The followup patch is different from https://sourceware.org/git/?p=newlib-cygwin.git;a=commitdiff;h=46702f92ea49Maybe I missed the submit protocol?ThanksXiaofeng
On Wednesday, November 8, 2017, 4:41:22 AM PST, Corinna Vinschen <corinna-cygwin@cygwin.com> wrote:
On Nov 8 13:34, Corinna Vinschen wrote:
> On Nov 7 17:33, Xiaofeng Liu via cygwin-patches wrote:
> > --- winsup/cygwin/fhandler_disk_file.cc | 1 + 1 files changed, 1 insertions(+), 0 deletions(-)
> > diff --git a/winsup/cygwin/fhandler_disk_file.cc b/winsup/cygwin/fhandler_disk_file.ccindex bc8fead..525cb32 100644--- a/winsup/cygwin/fhandler_disk_file.cc+++ b/winsup/cygwin/fhandler_disk_file.cc@@ -1525,6 +1525,7 @@ fhandler_disk_file::pread (void *buf, size_t count, off_t offset) IO_STATUS_BLOCK io; LARGE_INTEGER off = { QuadPart:offset }; + memset(&io, 0, sizeof(io)); if (!prw_handle && prw_open (false)) goto non_atomic; status = NtReadFile (prw_handle, NULL, NULL, NULL, &io, buf, count,-- 1.7.1
>
> This is still completely broken, unfortunately. I took a look, though,
> and fixed this problem slightly differently. Please have a look at
> https://sourceware.org/git/?p=newlib-cygwin.git;a=commitdiff;h=46702f92ea49
> I retained your authorship, of course.
Obvious followup patch:
https://sourceware.org/git/?p=newlib-cygwin.git;a=commitdiff;h=181fe5d2ed
Corinna
--
Corinna Vinschen Please, send mails regarding Cygwin to
Cygwin Maintainer cygwin AT cygwin DOT com
Red Hat