[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.

Corinna Vinschen corinna-cygwin@cygwin.com
Wed Nov 8 18:07:00 GMT 2017

On Nov  8 17:01, Xiaofeng Liu via cygwin-patches wrote:
>  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

You should *really* fix your MUA.  I don't know what you're using there
but your mails are next to unreadable, missing line breaks, missing
spaces.  Check the archives to see what I mean:

Also, please don't top-post.

>     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

As for the obvious followup patch, it only fixes the wrong comment I
added years ago.  Check what I pushed to fix the problem following the
other URL in my above mail, or just git pull and have a look in your
local repo.


Corinna Vinschen                  Please, send mails regarding Cygwin to
Cygwin Maintainer                 cygwin AT cygwin DOT com
Red Hat
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://cygwin.com/pipermail/cygwin-patches/attachments/20171108/05c9d518/attachment.sig>

More information about the Cygwin-patches mailing list