From ef269531a96b649ae27395f272cf95aa2c7062fa Mon Sep 17 00:00:00 2001 From: Ken Brown Date: Sat, 20 Apr 2019 11:49:35 -0400 Subject: [PATCH] Cygwin: FIFO: duplicate the i/o handle when opening a duplexer Don't use the same i/o handle for the first client handler as is used for the fhandler itself; this can lead to a later attempt to close the same handle twice. Instead use a duplicate. --- winsup/cygwin/fhandler_fifo.cc | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/winsup/cygwin/fhandler_fifo.cc b/winsup/cygwin/fhandler_fifo.cc index 409144fda..0a6dc0591 100644 --- a/winsup/cygwin/fhandler_fifo.cc +++ b/winsup/cygwin/fhandler_fifo.cc @@ -480,7 +480,14 @@ fhandler_fifo::open (int flags, mode_t) res = error_errno_set; goto out; } - fh->set_handle (ph); + if (!DuplicateHandle (GetCurrentProcess (), ph, GetCurrentProcess (), + &fh->get_handle (), 0, true, DUPLICATE_SAME_ACCESS)) + { + res = error_set_errno; + fh->close (); + delete fh; + goto out; + } fh->set_flags (flags); if (!(connect_evt = create_event ())) { -- 2.43.5