aboutsummaryrefslogtreecommitdiff
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
parent0e12519fe0567a6abcf6e2523102a768a520aef4 (diff)
downloadglibc-89f1e04174a6b6548d19f7f301ddcc8ab91d91df.zip
glibc-89f1e04174a6b6548d19f7f301ddcc8ab91d91df.tar.gz
glibc-89f1e04174a6b6548d19f7f301ddcc8ab91d91df.tar.bz2
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>
-rw-r--r--hurd/hurdmsg.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/hurd/hurdmsg.c b/hurd/hurdmsg.c
index 896fb87..8fde1f5 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;