aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSamuel Thibault <samuel.thibault@ens-lyon.org>2023-04-25 00:14:58 +0200
committerSamuel Thibault <samuel.thibault@ens-lyon.org>2023-04-25 00:14:58 +0200
commit323fe6a1a9204e2126df63cb81a88831d1cdeaf5 (patch)
tree940ba059ef0a8c87f267657d76f00b9234e8708b
parent5fa8945605fc0fe8df5162e0945518c061dc5ba4 (diff)
downloadglibc-323fe6a1a9204e2126df63cb81a88831d1cdeaf5.zip
glibc-323fe6a1a9204e2126df63cb81a88831d1cdeaf5.tar.gz
glibc-323fe6a1a9204e2126df63cb81a88831d1cdeaf5.tar.bz2
hurd: Do not take any flag from the CMSG_DATA
As fixed in 0822e3552a78 ("hurd: Don't pass FD_CLOEXEC in CMSG_DATA"), senders currently don't have any flag to pass. We shouldn't blindly take random flags that senders could be erroneously giving us.
-rw-r--r--sysdeps/mach/hurd/recvmsg.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/sysdeps/mach/hurd/recvmsg.c b/sysdeps/mach/hurd/recvmsg.c
index e06b0fe..4254dca 100644
--- a/sysdeps/mach/hurd/recvmsg.c
+++ b/sysdeps/mach/hurd/recvmsg.c
@@ -201,8 +201,10 @@ __libc_recvmsg (int fd, struct msghdr *message, int flags)
err = reauthenticate (ports[i], &newports[newfds]);
if (err)
goto cleanup;
+ /* We do not currently take any flag from the sender. */
fds[j] = opened_fds[newfds] = _hurd_intern_fd (newports[newfds],
- fds[j] | fd_flags,
+ (fds[j] & 0)
+ | fd_flags,
0);
if (fds[j] == -1)
{