r5044 - in glibc-package/trunk/debian: . patches patches/hurd-i386
Author: sthibault
Date: 2011-11-27 01:24:37 +0000 (Sun, 27 Nov 2011)
New Revision: 5044
Added:
glibc-package/trunk/debian/patches/hurd-i386/submitted-hurd-recvfrom.diff
Modified:
glibc-package/trunk/debian/changelog
glibc-package/trunk/debian/patches/series
Log:
hurd: fix recvfrom on socketpaire
Modified: glibc-package/trunk/debian/changelog
===================================================================
--- glibc-package/trunk/debian/changelog 2011-11-26 15:58:50 UTC (rev 5043)
+++ glibc-package/trunk/debian/changelog 2011-11-27 01:24:37 UTC (rev 5044)
@@ -48,6 +48,8 @@
* patches/hurd-i386/submitted-_hurd_socket_server-indexcheck.diff: New patch
from Pino Toscano to fix crash or spurious deallocation on bogus input.
* libc0.3.symbols.hurd-i386: Drop removed unused xxx_ and yyy_ RPCs.
+ * patches/hurd-i386/submitted-hurd-recvfrom.diff: New patch from Pino
+ Toscano to fix recvfrom on socketpair.
[ Petr Salinger ]
* kfreebsd/local-sysdeps.diff: update to revision 3763 (from glibc-bsd).
Added: glibc-package/trunk/debian/patches/hurd-i386/submitted-hurd-recvfrom.diff
===================================================================
--- glibc-package/trunk/debian/patches/hurd-i386/submitted-hurd-recvfrom.diff (rev 0)
+++ glibc-package/trunk/debian/patches/hurd-i386/submitted-hurd-recvfrom.diff 2011-11-27 01:24:37 UTC (rev 5044)
@@ -0,0 +1,31 @@
+hurd: recvfrom(): take into account null address ports
+
+Some kinds of sockets may return a null address port when calling the
+`socket_recv' RPC, so avoid using it in case an address argument buffer is
+asked to be filled. In such case, set the length of that address buffer to
+zero.
+
+2011-11-26 Pino Toscano <toscano.pino@tiscali.it>
+
+ * sysdeps/mach/hurd/recvfrom.c (__recvfrom): Check also for a null
+ address port. Set `addr_len' to 0 when not filling `addrarg'.
+--- a/sysdeps/mach/hurd/recvfrom.c
++++ b/sysdeps/mach/hurd/recvfrom.c
+@@ -55,7 +55,7 @@
+ return __hurd_sockfail (fd, flags, err);
+
+ /* Get address data for the returned address port if requested. */
+- if (addr != NULL)
++ if (addr != NULL && addrport != MACH_PORT_NULL)
+ {
+ char *buf = (char *) addr;
+ mach_msg_type_number_t buflen = *addr_len;
+@@ -89,6 +89,8 @@
+ if (buflen > 0)
+ addr->sa_family = type;
+ }
++ else if (addr_len != NULL)
++ *addr_len = 0;
+
+ __mach_port_deallocate (__mach_task_self (), addrport);
+
Modified: glibc-package/trunk/debian/patches/series
===================================================================
--- glibc-package/trunk/debian/patches/series 2011-11-26 15:58:50 UTC (rev 5043)
+++ glibc-package/trunk/debian/patches/series 2011-11-27 01:24:37 UTC (rev 5044)
@@ -163,6 +163,7 @@
hurd-i386/submitted-setresid.diff
hurd-i386/cvs-sgttyb.diff
hurd-i386/submitted-_hurd_socket_server-indexcheck.diff
+hurd-i386/submitted-hurd-recvfrom.diff
kfreebsd/submitted-libc_once.diff
Reply to: