]> sourceware.org Git - newlib-cygwin.git/commitdiff
Cygwin: FIFO: avoid crashes when cloning a client
authorKen Brown <kbrown@cornell.edu>
Mon, 25 Mar 2019 23:06:09 +0000 (23:06 +0000)
committerCorinna Vinschen <corinna@vinschen.de>
Wed, 27 Mar 2019 13:01:45 +0000 (14:01 +0100)
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.

winsup/cygwin/fhandler.h

index f6982f0ba96d54afcf601332889d5475193fd8cd..ef34f9c40f1b39c4ad06e072e491ec81e8aff55f 100644 (file)
@@ -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;
   }
 };
This page took 0.034167 seconds and 5 git commands to generate.