diff options
author | Sergey Bugaev <bugaevc@gmail.com> | 2023-04-29 16:13:53 +0300 |
---|---|---|
committer | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2023-04-29 16:57:04 +0200 |
commit | 89f1e04174a6b6548d19f7f301ddcc8ab91d91df (patch) | |
tree | 43f9db318965d51e6d4f9d900fe5e809daeaa408 /hurd | |
parent | 0e12519fe0567a6abcf6e2523102a768a520aef4 (diff) | |
download | glibc-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.c | 8 |
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; |