summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCorinna Vinschen <corinna@vinschen.de>2019-01-08 18:50:11 +0100
committerCorinna Vinschen <corinna@vinschen.de>2019-01-08 21:47:28 +0100
commit0c545f3264aaaac3d02d3ef785a2e2e9d77ed03f (patch)
tree13a244df80dee5bc42e975dbc31dd4b98b7f2323
parent9ba65ab8b5c5ece442931e585230d1e0422da538 (diff)
downloadcygnal-0c545f3264aaaac3d02d3ef785a2e2e9d77ed03f.tar.gz
cygnal-0c545f3264aaaac3d02d3ef785a2e2e9d77ed03f.tar.bz2
cygnal-0c545f3264aaaac3d02d3ef785a2e2e9d77ed03f.zip
Cygwin: open: handle O_CLOEXEC when opening file from handle
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
-rw-r--r--winsup/cygwin/fhandler.cc6
1 files changed, 5 insertions, 1 deletions
diff --git a/winsup/cygwin/fhandler.cc b/winsup/cygwin/fhandler.cc
index 9f5e0094f..9af08d735 100644
--- a/winsup/cygwin/fhandler.cc
+++ b/winsup/cygwin/fhandler.cc
@@ -555,7 +555,11 @@ fhandler_base::open (int flags, mode_t mode)
/* Allow to reopen from handle. This is utilized by
open ("/proc/PID/fd/DESCRIPTOR", ...); */
if (get_handle ())
- pc.init_reopen_attr (attr, get_handle ());
+ {
+ pc.init_reopen_attr (attr, get_handle ());
+ if (!(flags & O_CLOEXEC))
+ attr.Attributes |= OBJ_INHERIT;
+ }
else
pc.get_object_attr (attr, *sec_none_cloexec (flags));