[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

[glibc] 01/01: hurd-i386/tg-sendmsg-SCM_{RIGHTS, CREDS}.diff: Update



This is an automated email from the git hooks/post-receive script.

sthibault pushed a commit to branch sid
in repository glibc.

commit e23cce2baa3111ff928211709f2cb64d4cfc8d19
Author: Samuel Thibault <samuel.thibault@ens-lyon.org>
Date:   Mon Mar 14 01:02:21 2016 +0100

    hurd-i386/tg-sendmsg-SCM_{RIGHTS,CREDS}.diff: Update
---
 debian/changelog                                   |  5 ++
 debian/patches/hurd-i386/tg-sendmsg-SCM_CREDS.diff | 27 +++++++---
 .../patches/hurd-i386/tg-sendmsg-SCM_RIGHTS.diff   | 63 ++++++++++++----------
 3 files changed, 59 insertions(+), 36 deletions(-)

diff --git a/debian/changelog b/debian/changelog
index 745f39f..31aa715 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,8 +1,13 @@
 glibc (2.22-5) UNRELEASED; urgency=medium
 
+  [ Aurelien Jarno ]
   * debian/patches/localedata/fr_CA-first_weekday.diff: drop.  Closes:
     #769051.
 
+  [ Samuel Thibault ]
+  * patches/hurd-i386/tg-sendmsg-SCM_RIGHTS.diff,tg-sendmsg-SCM_CREDS.diff:
+    Update.
+
  -- Aurelien Jarno <aurel32@debian.org>  Sun, 13 Mar 2016 15:03:58 +0100
 
 glibc (2.22-3) unstable; urgency=medium
diff --git a/debian/patches/hurd-i386/tg-sendmsg-SCM_CREDS.diff b/debian/patches/hurd-i386/tg-sendmsg-SCM_CREDS.diff
index 33183a4..029859f 100644
--- a/debian/patches/hurd-i386/tg-sendmsg-SCM_CREDS.diff
+++ b/debian/patches/hurd-i386/tg-sendmsg-SCM_CREDS.diff
@@ -8,18 +8,22 @@ Samuel Thibault  <samuel.thibault@ens-lyon.org>
 	control message, and call __auth_user_authenticate_request to
 	make auth send credentials on that port.  Do not wait for a
 	reply.
-
 	* sysdeps/mach/hurd/recvmsg.c (contains_uid, contains_gid,
 	check_auth): New functions.
 	(__libc_recvmsg): On SCM_CREDS control messages, call check_auth
 	to check the passed credentials thanks to the answer from the
 	auth server.
+	* hurd/Makefile (user-interfaces): Add auth_request and
+	auth_reply.
 
 ---
- sysdeps/mach/hurd/recvmsg.c | 136 ++++++++++++++++++++++++++++++++++++++++++++
+ hurd/Makefile               |   2 +-
+ sysdeps/mach/hurd/recvmsg.c | 137 ++++++++++++++++++++++++++++++++++++++++++++
  sysdeps/mach/hurd/sendmsg.c |  34 +++++++++++
- 2 files changed, 170 insertions(+)
+ 3 files changed, 172 insertions(+), 1 deletion(-)
 
+diff --git a/sysdeps/mach/hurd/recvmsg.c b/sysdeps/mach/hurd/recvmsg.c
+index 0200b13..b66e5b5 100644
 --- a/sysdeps/mach/hurd/recvmsg.c
 +++ b/sysdeps/mach/hurd/recvmsg.c
 @@ -23,6 +23,123 @@
@@ -146,7 +150,7 @@ Samuel Thibault  <samuel.thibault@ens-lyon.org>
  /* Receive a message as described by MESSAGE from socket FD.
     Returns the number of bytes read or -1 for errors.  */
  ssize_t
-@@ -191,6 +308,21 @@ __libc_recvmsg (int fd, struct msghdr *m
+@@ -191,6 +308,21 @@ __libc_recvmsg (int fd, struct msghdr *message, int flags)
  	    i++;
  	  }
        }
@@ -168,20 +172,23 @@ Samuel Thibault  <samuel.thibault@ens-lyon.org>
    }
  
    for (i = 0; i < nports; i++)
-@@ -221,6 +353,10 @@ cleanup:
+@@ -221,6 +353,11 @@ cleanup:
  		__mach_port_deallocate (__mach_task_self (), ports[ii]);
  	      }
  	    }
 +	  else if (cmsg->cmsg_level == SOL_SOCKET && cmsg->cmsg_type == SCM_CREDS)
 +	    {
 +	      __mach_port_deallocate (__mach_task_self (), ports[ii]);
++	      ii++;
 +	    }
  	}
      }
  
+diff --git a/sysdeps/mach/hurd/sendmsg.c b/sysdeps/mach/hurd/sendmsg.c
+index 612581c..51167e8 100644
 --- a/sysdeps/mach/hurd/sendmsg.c
 +++ b/sysdeps/mach/hurd/sendmsg.c
-@@ -112,6 +112,8 @@ __libc_sendmsg (int fd, const struct msg
+@@ -111,6 +111,8 @@ __libc_sendmsg (int fd, const struct msghdr *message, int flags)
      if (cmsg->cmsg_level == SOL_SOCKET && cmsg->cmsg_type == SCM_RIGHTS)
        nports += (cmsg->cmsg_len - CMSG_ALIGN (sizeof (struct cmsghdr)))
  		/ sizeof (int);
@@ -190,7 +197,7 @@ Samuel Thibault  <samuel.thibault@ens-lyon.org>
  
    if (nports)
      ports = __alloca (nports * sizeof (mach_port_t));
-@@ -146,6 +148,38 @@ __libc_sendmsg (int fd, const struct msg
+@@ -145,6 +147,38 @@ __libc_sendmsg (int fd, const struct msghdr *message, int flags)
  		goto out;
  	    }
  	}
@@ -229,9 +236,11 @@ Samuel Thibault  <samuel.thibault@ens-lyon.org>
      }
  
    if (addr)
+diff --git a/hurd/Makefile b/hurd/Makefile
+index 4387253..0ee417d 100644
 --- a/hurd/Makefile
 +++ b/hurd/Makefile
-@@ -29,7 +29,7 @@ inline-headers = hurd.h $(addprefix hurd
+@@ -33,7 +33,7 @@ inline-headers = hurd.h $(addprefix hurd/,fd.h signal.h \
  # The RPC interfaces go in a separate library.
  interface-library := libhurduser
  user-interfaces		:= $(addprefix hurd/,\
@@ -240,3 +249,5 @@ Samuel Thibault  <samuel.thibault@ens-lyon.org>
  				       process process_request \
  				       msg msg_reply msg_request \
  				       exec exec_startup crash interrupt \
+-- 
+tg: (511e7f1..) t/sendmsg-SCM_CREDS (depends on: t/sendmsg-SCM_RIGHTS)
diff --git a/debian/patches/hurd-i386/tg-sendmsg-SCM_RIGHTS.diff b/debian/patches/hurd-i386/tg-sendmsg-SCM_RIGHTS.diff
index 2e97f81..f25b686 100644
--- a/debian/patches/hurd-i386/tg-sendmsg-SCM_RIGHTS.diff
+++ b/debian/patches/hurd-i386/tg-sendmsg-SCM_RIGHTS.diff
@@ -4,15 +4,15 @@ Date: Sat, 17 Jul 2010 22:09:13 +0200
 Subject: [PATCH] Add support to send file descriptors over Unix sockets
 
 ---
- sysdeps/mach/hurd/recvmsg.c | 92 ++++++++++++++++++++++++++++++++++++++++++++-
- sysdeps/mach/hurd/sendmsg.c | 73 +++++++++++++++++++++++++++++------
- 2 files changed, 152 insertions(+), 13 deletions(-)
+ sysdeps/mach/hurd/recvmsg.c | 97 ++++++++++++++++++++++++++++++++++++++++++++-
+ sysdeps/mach/hurd/sendmsg.c | 73 +++++++++++++++++++++++++++++-----
+ 2 files changed, 157 insertions(+), 13 deletions(-)
 
-Index: glibc-2.19/sysdeps/mach/hurd/recvmsg.c
-===================================================================
---- glibc-2.19.orig/sysdeps/mach/hurd/recvmsg.c
-+++ glibc-2.19/sysdeps/mach/hurd/recvmsg.c
-@@ -32,13 +32,33 @@ __libc_recvmsg (int fd, struct msghdr *m
+diff --git a/sysdeps/mach/hurd/recvmsg.c b/sysdeps/mach/hurd/recvmsg.c
+index 5d7b1ee..dfd4145 100644
+--- a/sysdeps/mach/hurd/recvmsg.c
++++ b/sysdeps/mach/hurd/recvmsg.c
+@@ -32,13 +32,34 @@ __libc_recvmsg (int fd, struct msghdr *message, int flags)
    addr_port_t aport;
    char *data = NULL;
    mach_msg_type_number_t len = 0;
@@ -27,6 +27,7 @@ Index: glibc-2.19/sysdeps/mach/hurd/recvmsg.c
 -  int i;
 +  int nfds, *opened_fds = NULL;
 +  int i, ii, j;
++  int newfds;
 +
 +  error_t reauthenticate (mach_port_t port, mach_port_t *result)
 +    {
@@ -48,7 +49,7 @@ Index: glibc-2.19/sysdeps/mach/hurd/recvmsg.c
  
    /* Find the total number of bytes to be read.  */
    amount = 0;
-@@ -135,9 +155,77 @@ __libc_recvmsg (int fd, struct msghdr *m
+@@ -135,9 +156,81 @@ __libc_recvmsg (int fd, struct msghdr *message, int flags)
      message->msg_controllen = clen;
    memcpy (message->msg_control, cdata, message->msg_controllen);
  
@@ -60,6 +61,8 @@ Index: glibc-2.19/sysdeps/mach/hurd/recvmsg.c
 +
 +  /* This counts how many ports we processed completely.  */
 +  i = 0;
++  /* This counts how many new fds we create.  */
++  newfds = 0;
 +
 +  for (cmsg = CMSG_FIRSTHDR (message);
 +       cmsg;
@@ -75,17 +78,19 @@ Index: glibc-2.19/sysdeps/mach/hurd/recvmsg.c
 +
 +	for (j = 0; j < nfds; j++)
 +	  {
-+	    err = reauthenticate (ports[i], &newports[i]);
++	    err = reauthenticate (ports[i], &newports[newfds]);
 +	    if (err)
 +	      goto cleanup;
-+	    fds[j] = opened_fds[i] = _hurd_intern_fd (newports[i], fds[j], 0);
++	    fds[j] = opened_fds[newfds] = _hurd_intern_fd (newports[newfds],
++							   fds[j], 0);
 +	    if (fds[j] == -1)
 +	      {
 +		err = errno;
-+		__mach_port_deallocate (__mach_task_self (), newports[i]);
++		__mach_port_deallocate (__mach_task_self (), newports[newfds]);
 +		goto cleanup;
 +	      }
 +	    i++;
++	    newfds++;
 +	  }
 +      }
 +  }
@@ -102,7 +107,7 @@ Index: glibc-2.19/sysdeps/mach/hurd/recvmsg.c
 +  if (nports > 0)
 +    {
 +      ii = 0;
-+      j = 0;
++      newfds = 0;
 +      for (cmsg = CMSG_FIRSTHDR (message);
 +	   cmsg;
 +	   cmsg = CMSG_NXTHDR (message, cmsg))
@@ -111,10 +116,10 @@ Index: glibc-2.19/sysdeps/mach/hurd/recvmsg.c
 +	    {
 +	      nfds = (cmsg->cmsg_len - CMSG_ALIGN (sizeof (struct cmsghdr)))
 +		     / sizeof (int);
-+	      for (j = 0; j < nfds && ii < i; j++, ii++)
++	      for (j = 0; j < nfds && ii < i; j++, ii++, newfds++)
 +	      {
-+		_hurd_fd_close (_hurd_fd_get (opened_fds[ii]));
-+		__mach_port_deallocate (__mach_task_self (), newports[ii]);
++		_hurd_fd_close (_hurd_fd_get (opened_fds[newfds]));
++		__mach_port_deallocate (__mach_task_self (), newports[newfds]);
 +		__mach_port_deallocate (__mach_task_self (), ports[ii]);
 +	      }
 +	    }
@@ -126,11 +131,11 @@ Index: glibc-2.19/sysdeps/mach/hurd/recvmsg.c
  }
  
  weak_alias (__libc_recvmsg, recvmsg)
-Index: glibc-2.19/sysdeps/mach/hurd/sendmsg.c
-===================================================================
---- glibc-2.19.orig/sysdeps/mach/hurd/sendmsg.c
-+++ glibc-2.19/sysdeps/mach/hurd/sendmsg.c
-@@ -32,6 +32,10 @@ ssize_t
+diff --git a/sysdeps/mach/hurd/sendmsg.c b/sysdeps/mach/hurd/sendmsg.c
+index 5a93c63..612581c 100644
+--- a/sysdeps/mach/hurd/sendmsg.c
++++ b/sysdeps/mach/hurd/sendmsg.c
+@@ -31,6 +31,10 @@ ssize_t
  __libc_sendmsg (int fd, const struct msghdr *message, int flags)
  {
    error_t err = 0;
@@ -141,7 +146,7 @@ Index: glibc-2.19/sysdeps/mach/hurd/sendmsg.c
    struct sockaddr_un *addr = message->msg_name;
    socklen_t addr_len = message->msg_namelen;
    addr_port_t aport = MACH_PORT_NULL;
-@@ -44,6 +48,7 @@ __libc_sendmsg (int fd, const struct msg
+@@ -43,6 +47,7 @@ __libc_sendmsg (int fd, const struct msghdr *message, int flags)
    mach_msg_type_number_t len;
    mach_msg_type_number_t amount;
    int dealloc = 0;
@@ -149,7 +154,7 @@ Index: glibc-2.19/sysdeps/mach/hurd/sendmsg.c
    int i;
  
    /* Find the total number of bytes to be written.  */
-@@ -101,6 +106,48 @@ __libc_sendmsg (int fd, const struct msg
+@@ -100,6 +105,48 @@ __libc_sendmsg (int fd, const struct msghdr *message, int flags)
  	}
      }
  
@@ -198,8 +203,8 @@ Index: glibc-2.19/sysdeps/mach/hurd/sendmsg.c
    if (addr)
      {
        if (addr->sun_family == AF_LOCAL)
-@@ -111,9 +158,8 @@ __libc_sendmsg (int fd, const struct msg
- 	  file_t file = __file_name_lookup (name, 0, 0);
+@@ -109,9 +156,8 @@ __libc_sendmsg (int fd, const struct msghdr *message, int flags)
+ 	  file_t file = __file_name_lookup (addr->sun_path, 0, 0);
  	  if (file == MACH_PORT_NULL)
  	    {
 -	      if (dealloc)
@@ -210,7 +215,7 @@ Index: glibc-2.19/sysdeps/mach/hurd/sendmsg.c
  	    }
  	  err = __ifsock_getsockaddr (file, &aport);
  	  __mach_port_deallocate (__mach_task_self (), file);
-@@ -121,11 +167,7 @@ __libc_sendmsg (int fd, const struct msg
+@@ -119,11 +165,7 @@ __libc_sendmsg (int fd, const struct msghdr *message, int flags)
  	    /* The file did not grok the ifsock protocol.  */
  	    err = ENOTSOCK;
  	  if (err)
@@ -223,7 +228,7 @@ Index: glibc-2.19/sysdeps/mach/hurd/sendmsg.c
  	}
        else
  	err = EIEIO;
-@@ -144,8 +186,9 @@ __libc_sendmsg (int fd, const struct msg
+@@ -142,8 +184,9 @@ __libc_sendmsg (int fd, const struct msghdr *message, int flags)
  			      /* Send the data.  */
  			      err = __socket_send (port, aport,
  						   flags, data.ptr, len,
@@ -235,7 +240,7 @@ Index: glibc-2.19/sysdeps/mach/hurd/sendmsg.c
  						   message->msg_control,
  						   message->msg_controllen,
  						   &amount);
-@@ -154,11 +197,19 @@ __libc_sendmsg (int fd, const struct msg
+@@ -152,11 +195,19 @@ __libc_sendmsg (int fd, const struct msghdr *message, int flags)
  			    }
  			  err;
  			}));
@@ -256,3 +261,5 @@ Index: glibc-2.19/sysdeps/mach/hurd/sendmsg.c
  }
  
  weak_alias (__libc_sendmsg, sendmsg)
+-- 
+tg: (b4578ba..) t/sendmsg-SCM_RIGHTS (depends on: 64a17f1adde4715bb6607f64decd73b2df9e6852)

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-glibc/glibc.git


Reply to: