From 89f1e04174a6b6548d19f7f301ddcc8ab91d91df Mon Sep 17 00:00:00 2001 From: Sergey Bugaev Date: Sat, 29 Apr 2023 16:13:53 +0300 Subject: [PATCH] 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 Message-Id: <20230429131354.2507443-6-bugaevc@gmail.com> --- hurd/hurdmsg.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) 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; -- 2.11.4.GIT