From: GNU Libc Maintainers Date: Mon, 16 Jan 2017 17:43:37 +0000 (+0000) Subject: git-recvmsg X-Git-Tag: archive/raspbian/2.25-3+rpi1~1^2^2^2^2^2^2^2~80 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=db59e27e9721127a43fad2c8e578491107326333;p=glibc.git 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 --- 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);