[newlib-cygwin] Cygwin: FIFO: avoid crashes when cloning a client

Corinna Vinschen corinna@sourceware.org
Wed Mar 27 13:03:00 GMT 2019


https://sourceware.org/git/gitweb.cgi?p=newlib-cygwin.git;h=40db74128ad2ed2431cd67f1c14ab50d4859d4df

commit 40db74128ad2ed2431cd67f1c14ab50d4859d4df
Author: Ken Brown <kbrown@cornell.edu>
Date:   Mon Mar 25 23:06:09 2019 +0000

    Cygwin: FIFO: avoid crashes when cloning a client
    
    fhandler_fifo::clone called fhandler_base::clone on each client
    fhandler.  But those fhandlers are actually fhandler_fifo objects, so
    when fhandler_base::clone calls copyto, it's actually
    fhandler_fifo::copyto that gets called.  This can lead to mysterious
    crashes.
    
    Fix this by simply calling clone (which translates to
    fhandler_fifo::clone) on each client fhandler.

Diff:
---
 winsup/cygwin/fhandler.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/winsup/cygwin/fhandler.h b/winsup/cygwin/fhandler.h
index f6982f0..ef34f9c 100644
--- a/winsup/cygwin/fhandler.h
+++ b/winsup/cygwin/fhandler.h
@@ -1316,7 +1316,7 @@ public:
     fhandler_fifo *fhf = new (ptr) fhandler_fifo (ptr);
     copyto (fhf);
     for (int i = 0; i < nclients; i++)
-      fhf->client[i].fh = client[i].fh->fhandler_base::clone ();
+      fhf->client[i].fh = client[i].fh->clone ();
     return fhf;
   }
 };



More information about the Cygwin-cvs mailing list