]> sourceware.org Git - newlib-cygwin.git/commitdiff
Cygwin: AF_UNIX: fix creating shared mem region in dup
authorCorinna Vinschen <corinna@vinschen.de>
Fri, 28 Feb 2020 11:39:41 +0000 (12:39 +0100)
committerCorinna Vinschen <corinna@vinschen.de>
Fri, 28 Feb 2020 11:41:05 +0000 (12:41 +0100)
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 <corinna@vinschen.de>
winsup/cygwin/fhandler_socket_unix.cc

index eea7e76b341979aa90e61b6e07621b57f9f404df..824bcba2e4a6089bd17d667bac4d3305afda1046 100644 (file)
@@ -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;
This page took 0.034309 seconds and 5 git commands to generate.