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>
This commit is contained in:
Sergey Bugaev 2023-04-29 16:13:53 +03:00 committed by Samuel Thibault
parent 0e12519fe0
commit 89f1e04174

View File

@ -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;