From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 29573 invoked by alias); 28 Feb 2020 11:42:56 -0000 Mailing-List: contact cygwin-cvs-help@cygwin.com; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Post: List-Help: , Sender: cygwin-cvs-owner@cygwin.com Received: (qmail 29530 invoked by uid 9078); 28 Feb 2020 11:42:56 -0000 Date: Fri, 28 Feb 2020 11:42:00 -0000 Message-ID: <20200228114256.29528.qmail@sourceware.org> Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: Corinna Vinschen To: cygwin-cvs@sourceware.org Subject: [newlib-cygwin] Cygwin: AF_UNIX: fix creating shared mem region in dup X-Act-Checkin: newlib-cygwin X-Git-Author: Corinna Vinschen X-Git-Refname: refs/heads/master X-Git-Oldrev: ba2f251d439294c7087f3a38a8d407c95cdc5c1e X-Git-Newrev: 92b8b300c26c20ea441f69b36da9a838aa85c2d8 X-SW-Source: 2020-q1/txt/msg00091.txt https://sourceware.org/git/gitweb.cgi?p=newlib-cygwin.git;h=92b8b300c26c20ea441f69b36da9a838aa85c2d8 commit 92b8b300c26c20ea441f69b36da9a838aa85c2d8 Author: Corinna Vinschen Date: Fri Feb 28 12:39:41 2020 +0100 Cygwin: AF_UNIX: fix creating shared mem region in dup reopen_shmem is accidentally called on the parent fhandler rather than the child fhandler, and it's called too early. Make sure to call it on the child and only after its shmem_handle is valid. Signed-off-by: Corinna Vinschen Diff: --- winsup/cygwin/fhandler_socket_unix.cc | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/winsup/cygwin/fhandler_socket_unix.cc b/winsup/cygwin/fhandler_socket_unix.cc index eea7e76..824bcba 100644 --- a/winsup/cygwin/fhandler_socket_unix.cc +++ b/winsup/cygwin/fhandler_socket_unix.cc @@ -1201,12 +1201,6 @@ fhandler_socket_unix::dup (fhandler_base *child, int flags) return -1; } fhandler_socket_unix *fhs = (fhandler_socket_unix *) child; - if (reopen_shmem () < 0) - { - __seterrno (); - fhs->close (); - return -1; - } if (backing_file_handle && backing_file_handle != INVALID_HANDLE_VALUE && !DuplicateHandle (GetCurrentProcess (), backing_file_handle, GetCurrentProcess (), &fhs->backing_file_handle, @@ -1224,6 +1218,12 @@ fhandler_socket_unix::dup (fhandler_base *child, int flags) fhs->close (); return -1; } + if (fhs->reopen_shmem () < 0) + { + __seterrno (); + fhs->close (); + return -1; + } fhs->sun_path (sun_path ()); fhs->peer_sun_path (peer_sun_path ()); fhs->connect_wait_thr = NULL;