about summary refs log tree commit diff
path: root/hurd
diff options
context:
space:
mode:
authorSergey Bugaev <bugaevc@gmail.com>2023-04-29 16:13:53 +0300
committerSamuel Thibault <samuel.thibault@ens-lyon.org>2023-04-29 16:57:04 +0200
commit89f1e04174a6b6548d19f7f301ddcc8ab91d91df (patch)
tree43f9db318965d51e6d4f9d900fe5e809daeaa408 /hurd
parent0e12519fe0567a6abcf6e2523102a768a520aef4 (diff)
downloadglibc-89f1e04174a6b6548d19f7f301ddcc8ab91d91df.tar.gz
glibc-89f1e04174a6b6548d19f7f301ddcc8ab91d91df.tar.xz
glibc-89f1e04174a6b6548d19f7f301ddcc8ab91d91df.zip
hurd: Respect existing FD_CLOEXEC in S_msg_set_fd
If the process has set the close-on-exec flag for the file descriptor,
it expects the file descriptor to get closed on exec, even if we replace
what the file descriptor refers to.

Signed-off-by: Sergey Bugaev <bugaevc@gmail.com>
Message-Id: <20230429131354.2507443-6-bugaevc@gmail.com>
Diffstat (limited to 'hurd')
-rw-r--r--hurd/hurdmsg.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/hurd/hurdmsg.c b/hurd/hurdmsg.c
index 896fb87cfa..8fde1f535d 100644
--- a/hurd/hurdmsg.c
+++ b/hurd/hurdmsg.c
@@ -323,7 +323,13 @@ _S_msg_set_fd (mach_port_t msgport, mach_port_t auth,
   AUTHCHECK;
 
   /* We consume the reference if successful.  */
-  err = HURD_FD_USE (which, (_hurd_port2fd (descriptor, port, 0), 0));
+  err = HURD_FD_USE (which,
+		     ({
+		       int flags = (descriptor->flags & FD_CLOEXEC)
+				   ? O_CLOEXEC : 0;
+		       _hurd_port2fd (descriptor, port, flags);
+		       0;
+		     }));
   if (err)
     return err;