From 92b8b300c26c20ea441f69b36da9a838aa85c2d8 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Fri, 28 Feb 2020 12:39:41 +0100 Subject: [PATCH] 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 --- 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 eea7e76b3..824bcba2e 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;