r6257 - in glibc-package/trunk/debian: . patches patches/hurd-i386
Author: sthibault
Date: 2014-08-27 21:24:09 +0000 (Wed, 27 Aug 2014)
New Revision: 6257
Added:
glibc-package/trunk/debian/patches/hurd-i386/submitted-bind_umask2.diff
Modified:
glibc-package/trunk/debian/changelog
glibc-package/trunk/debian/patches/hurd-i386/submitted-bind_umask.diff
glibc-package/trunk/debian/patches/series
Log:
patches/hurd-i386/submitted-bind_umask.diff: Split into
patches/hurd-i386/submitted-bind_umask2 as requested by upstream.
Modified: glibc-package/trunk/debian/changelog
===================================================================
--- glibc-package/trunk/debian/changelog 2014-08-27 19:49:47 UTC (rev 6256)
+++ glibc-package/trunk/debian/changelog 2014-08-27 21:24:09 UTC (rev 6257)
@@ -3,6 +3,8 @@
[ Samuel Thibault ]
* patches/hurd-i386/tg-thread-cancel.diff: Update patch against two other
overzealous assertions.
+ * patches/hurd-i386/submitted-bind_umask.diff: Split into
+ patches/hurd-i386/submitted-bind_umask2 as requested by upstream.
-- Aurelien Jarno <aurel32@debian.org> Wed, 27 Aug 2014 08:22:41 +0200
Modified: glibc-package/trunk/debian/patches/hurd-i386/submitted-bind_umask.diff
===================================================================
--- glibc-package/trunk/debian/patches/hurd-i386/submitted-bind_umask.diff 2014-08-27 19:49:47 UTC (rev 6256)
+++ glibc-package/trunk/debian/patches/hurd-i386/submitted-bind_umask.diff 2014-08-27 21:24:09 UTC (rev 6257)
@@ -1,19 +1,17 @@
-2014-08-25 Samuel Thibault <samuel.thibault@ens-lyon.org>
+2014-08-27 Samuel Thibault <samuel.thibault@ens-lyon.org>
- Fix bind when umask is e.g. 0777.
+ Simplify atomicity of socket creation in bind.
- * sysdeps/mach/hurd/bind.c (__bind): Pass mode 0666 to __dir_mkfile
- instead of final mode, so that call __ifsock_getsockaddr can always
- succeed, before calling __file_chmod to fix the mode according to umask,
- before calling __dir_link to show the file.
+ * sysdeps/mach/hurd/bind.c (__bind): Use dir_lookup(node, "") instead of
+ looking up the name after linking the file.
---
- bind.c | 57 ++++++++++++++++++++++++++++++++-------------------------
- 1 file changed, 32 insertions(+), 25 deletions(-)
+ bind.c | 48 +++++++++++++++++++++++++-----------------------
+ 1 file changed, 25 insertions(+), 23 deletions(-)
---- a/sysdeps/mach/hurd/bind.c.orig 2014-08-25 14:11:11.245229537 +0200
-+++ b/sysdeps/mach/hurd/bind.c 2014-08-25 14:11:35.892517639 +0200
-@@ -40,7 +40,7 @@
+--- a/sysdeps/mach/hurd/bind.c
++++ b/sysdeps/mach/hurd/bind.c
+@@ -40,7 +40,7 @@ __bind (int fd, __CONST_SOCKADDR_ARG ad
char *name = _hurd_sun_path_dupa (addr, len);
/* For the local domain, we must create a node in the filesystem
using the ifsock translator and then fetch the address from it. */
@@ -22,16 +20,7 @@
char *n;
dir = __file_name_split (name, &n);
-@@ -48,7 +48,7 @@
- return -1;
-
- /* Create a new, unlinked node in the target directory. */
-- err = __dir_mkfile (dir, O_CREAT, 0666 & ~_hurd_umask, &node);
-+ err = __dir_mkfile (dir, O_CREAT, 0666, &node);
-
- if (! err)
- {
-@@ -61,36 +61,43 @@
+@@ -61,36 +61,38 @@ __bind (int fd, __CONST_SOCKADDR_ARG ad
MACH_MSG_TYPE_COPY_SEND);
if (! err)
{
@@ -42,7 +31,7 @@
+ enum retry_type doretry;
+ char retryname[1024];
+ /* Get a port to the ifsock translator. */
-+ err = __dir_lookup(node, "", 0, 0, &doretry, retryname, &ifsock);
++ err = __dir_lookup (node, "", 0, 0, &doretry, retryname, &ifsock);
+ if (! err)
+ if (doretry != FS_RETRY_NORMAL || retryname[0] != '\0')
+ err = EADDRINUSE;
@@ -78,17 +67,11 @@
- it, and replaced it with a different node, before we
- did our lookup. Treat it as if our link had failed
- with EEXIST. */
-- err = EADDRINUSE;
-+ /* Fix the access mode before showing the file. */
-+ err = __file_chmod (node, 0666 & ~_hurd_umask);
-+ if (! err)
-+ {
-+ /* Link the node, now a socket with proper mode, into the
-+ * target directory. */
-+ err = __dir_link (dir, node, n, 1);
-+ if (err == EEXIST)
-+ err = EADDRINUSE;
-+ }
++ /* Link the node, now a socket with proper mode, into the
++ * target directory. */
++ err = __dir_link (dir, node, n, 1);
++ if (err == EEXIST)
+ err = EADDRINUSE;
+ if (err)
+ __mach_port_deallocate (__mach_task_self (), aport);
}
Added: glibc-package/trunk/debian/patches/hurd-i386/submitted-bind_umask2.diff
===================================================================
--- glibc-package/trunk/debian/patches/hurd-i386/submitted-bind_umask2.diff (rev 0)
+++ glibc-package/trunk/debian/patches/hurd-i386/submitted-bind_umask2.diff 2014-08-27 21:24:09 UTC (rev 6257)
@@ -0,0 +1,46 @@
+2014-08-27 Samuel Thibault <samuel.thibault@ens-lyon.org>
+
+ Fix bind when umask is e.g. 0777.
+
+ * sysdeps/mach/hurd/bind.c (__bind): Pass mode 0666 to __dir_mkfile
+ instead of final mode, so that call __ifsock_getsockaddr can always
+ succeed, before calling __file_chmod to fix the mode according to umask,
+ before calling __dir_link to show the file.
+
+---
+ bind.c | 17 +++++++++++------
+ 1 file changed, 11 insertions(+), 6 deletions(-)
+
+--- a/sysdeps/mach/hurd/bind.c
++++ b/sysdeps/mach/hurd/bind.c
+@@ -48,7 +48,7 @@ __bind (int fd, __CONST_SOCKADDR_ARG ad
+ return -1;
+
+ /* Create a new, unlinked node in the target directory. */
+- err = __dir_mkfile (dir, O_CREAT, 0666 & ~_hurd_umask, &node);
++ err = __dir_mkfile (dir, O_CREAT, 0666, &node);
+
+ if (! err)
+ {
+@@ -82,11 +82,16 @@ __bind (int fd, __CONST_SOCKADDR_ARG ad
+ err = EADDRINUSE;
+ if (! err)
+ {
+- /* Link the node, now a socket with proper mode, into the
+- * target directory. */
+- err = __dir_link (dir, node, n, 1);
+- if (err == EEXIST)
+- err = EADDRINUSE;
++ /* Fix the access mode before showing the file. */
++ err = __file_chmod (node, 0666 & ~_hurd_umask);
++ if (! err)
++ {
++ /* Link the node, now a socket with proper mode, into the
++ * target directory. */
++ err = __dir_link (dir, node, n, 1);
++ if (err == EEXIST)
++ err = EADDRINUSE;
++ }
+ if (err)
+ __mach_port_deallocate (__mach_task_self (), aport);
+ }
Modified: glibc-package/trunk/debian/patches/series
===================================================================
--- glibc-package/trunk/debian/patches/series 2014-08-27 19:49:47 UTC (rev 6256)
+++ glibc-package/trunk/debian/patches/series 2014-08-27 21:24:09 UTC (rev 6257)
@@ -150,6 +150,7 @@
hurd-i386/cvs-libpthread_guardsize.diff
hurd-i386/cvs-libpthread_std_thread.diff
hurd-i386/submitted-bind_umask.diff
+hurd-i386/submitted-bind_umask2.diff
i386/local-biarch.diff
i386/local-cmov.diff
Reply to: