From: Sergey Bugaev Date: Sat, 29 Apr 2023 13:13:53 +0000 (+0300) Subject: hurd: Respect existing FD_CLOEXEC in S_msg_set_fd X-Git-Tag: glibc-2.38~322 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=89f1e04174a6b6548d19f7f301ddcc8ab91d91df;p=thirdparty%2Fglibc.git 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> --- diff --git a/hurd/hurdmsg.c b/hurd/hurdmsg.c index 896fb87cfa7..8fde1f535d1 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;