From b1af6b95ee99d64fc5f563b1bffc7be481e717f0 Mon Sep 17 00:00:00 2001 From: GNU Libc Maintainers Date: Fri, 25 Nov 2016 22:09:39 +0000 Subject: [PATCH] git-recvmsg commit a194625ef31f0c33afae9b53e2dfaa17c2517606 Author: Samuel Thibault Date: Tue Aug 9 01:42:50 2016 +0200 Fix recvmsg returning SIGLOST on PF_LOCAL sockets when msg_name is not NULL. * sysdeps/mach/hurd/recvmsg.c (__libc_recvmsg): Cope with aport being MACH_PORT_NULL. Gbp-Pq: Topic hurd-i386 Gbp-Pq: Name git-recvmsg.diff --- sysdeps/mach/hurd/recvmsg.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sysdeps/mach/hurd/recvmsg.c b/sysdeps/mach/hurd/recvmsg.c index a17479491..a1b967825 100644 --- a/sysdeps/mach/hurd/recvmsg.c +++ b/sysdeps/mach/hurd/recvmsg.c @@ -202,7 +202,7 @@ __libc_recvmsg (int fd, struct msghdr *message, int flags) &message->msg_flags, amount))) return __hurd_sockfail (fd, flags, err); - if (message->msg_name != NULL) + if (message->msg_name != NULL && aport != MACH_PORT_NULL) { char *buf = message->msg_name; mach_msg_type_number_t buflen = message->msg_namelen; @@ -236,6 +236,8 @@ __libc_recvmsg (int fd, struct msghdr *message, int flags) if (buflen > 0) ((struct sockaddr *) message->msg_name)->sa_family = type; } + else if (message->msg_name != NULL) + message->msg_namelen = 0; __mach_port_deallocate (__mach_task_self (), aport); -- 2.30.2