pkgsrc-Changes-HG archive

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

[pkgsrc/trunk]: pkgsrc/sysutils/dbus Restore socket credentials fix that was ...



details:   https://anonhg.NetBSD.org/pkgsrc/rev/8057adc9ff47
branches:  trunk
changeset: 550485:8057adc9ff47
user:      jmcneill <jmcneill%pkgsrc.org@localhost>
date:      Sun Nov 23 01:40:26 2008 +0000

description:
Restore socket credentials fix that was lost 5 months ago, bump PKGREVISION
and STOP BREAKING DBUS.

diffstat:

 sysutils/dbus/Makefile         |    4 +-
 sysutils/dbus/distinfo         |    4 +-
 sysutils/dbus/patches/patch-ab |  129 ++++++++++++++++++++++++++++++++++++++--
 3 files changed, 126 insertions(+), 11 deletions(-)

diffs (187 lines):

diff -r 37215e8af671 -r 8057adc9ff47 sysutils/dbus/Makefile
--- a/sysutils/dbus/Makefile    Sat Nov 22 21:21:48 2008 +0000
+++ b/sysutils/dbus/Makefile    Sun Nov 23 01:40:26 2008 +0000
@@ -1,7 +1,7 @@
-# $NetBSD: Makefile,v 1.37 2008/11/21 21:27:36 wiz Exp $
+# $NetBSD: Makefile,v 1.38 2008/11/23 01:40:26 jmcneill Exp $
 
 DISTNAME=      dbus-1.2.4
-PKGREVISION=   2
+PKGREVISION=   3
 CATEGORIES=    sysutils
 MASTER_SITES=  http://dbus.freedesktop.org/releases/dbus/
 
diff -r 37215e8af671 -r 8057adc9ff47 sysutils/dbus/distinfo
--- a/sysutils/dbus/distinfo    Sat Nov 22 21:21:48 2008 +0000
+++ b/sysutils/dbus/distinfo    Sun Nov 23 01:40:26 2008 +0000
@@ -1,10 +1,10 @@
-$NetBSD: distinfo,v 1.29 2008/11/21 21:27:36 wiz Exp $
+$NetBSD: distinfo,v 1.30 2008/11/23 01:40:26 jmcneill Exp $
 
 SHA1 (dbus-1.2.4.tar.gz) = 913d796b79802b6ee6ca2b0ef59c670f3fd79774
 RMD160 (dbus-1.2.4.tar.gz) = 0441eb8b668ed70250e484b02fe6a83c05c9a088
 Size (dbus-1.2.4.tar.gz) = 1564370 bytes
 SHA1 (patch-aa) = 2486dfe8a9c80cf10e099ce20f60d14de84e8adb
-SHA1 (patch-ab) = 773d4c8e6c3feed90e24eb563c6389c8592925a2
+SHA1 (patch-ab) = c6718fa46bf4befab0d7cd1c7d698b81922f7021
 SHA1 (patch-ac) = afec419973f339e846dc109866148529f80998b3
 SHA1 (patch-ag) = 999071b782982c12329025ea8e393bfed940b654
 SHA1 (patch-ai) = a45bd8d29955e9c14a4d8b3f44b42242d70c1cd8
diff -r 37215e8af671 -r 8057adc9ff47 sysutils/dbus/patches/patch-ab
--- a/sysutils/dbus/patches/patch-ab    Sat Nov 22 21:21:48 2008 +0000
+++ b/sysutils/dbus/patches/patch-ab    Sun Nov 23 01:40:26 2008 +0000
@@ -1,8 +1,16 @@
-$NetBSD: patch-ab,v 1.14 2008/10/12 11:15:22 tron Exp $
+$NetBSD: patch-ab,v 1.15 2008/11/23 01:40:26 jmcneill Exp $
 
---- dbus/dbus-sysdeps-unix.c.orig      2008-10-06 22:14:50.000000000 +0100
-+++ dbus/dbus-sysdeps-unix.c   2008-10-12 12:01:54.000000000 +0100
-@@ -35,6 +35,9 @@
+--- dbus/dbus-sysdeps-unix.c.orig      2008-10-06 17:14:50.000000000 -0400
++++ dbus/dbus-sysdeps-unix.c
+@@ -23,6 +23,7 @@
+  */
+ 
+ #define _GNU_SOURCE 
++#define _NETBSD_SOURCE
+ 
+ #include "dbus-internals.h"
+ #include "dbus-sysdeps.h"
+@@ -35,6 +36,9 @@
  #include "dbus-list.h"
  #include "dbus-credentials.h"
  
@@ -12,7 +20,114 @@
  #include <sys/types.h>
  #include <stdlib.h>
  #include <string.h>
-@@ -1826,7 +1829,26 @@
+@@ -71,6 +75,10 @@
+ #include <ucred.h>
+ #endif
+ 
++#ifdef __NetBSD__
++#include <sys/un.h>
++#endif
++
+ #ifdef HAVE_ADT
+ #include <bsm/adt.h>
+ #endif
+@@ -87,6 +95,32 @@
+ #define socklen_t int
+ #endif
+ 
++#ifdef LOCAL_PEEREID
++static dbus_bool_t
++dbus_nb_getpeereid(int fd, pid_t *pid, uid_t *uid, gid_t *gid)
++{
++  struct unpcbid cred;
++  socklen_t len = sizeof(cred);
++
++  _dbus_verbose ("dbus_nb_getpeereid: enter, fd=%d\n");
++  if (getsockopt (fd, 0, LOCAL_PEEREID, &cred, &len) < 0)
++    {
++      _dbus_verbose ("dbus_nb_getpeereid: getsockopt LOCAL_PEEREID failed: %s\n", strerror(errno));
++      return FALSE;
++    }
++  if (pid)
++    *pid = cred.unp_pid;
++  if (uid)
++    *uid = cred.unp_euid;
++  if (gid)
++    *gid = cred.unp_egid;
++
++  _dbus_verbose ("dbus_nb_getpeereid: returning TRUE, pid=%d uid=%d gid=%d\n",
++               cred.unp_pid, cred.unp_euid, cred.unp_egid);
++  return TRUE;
++}
++#endif
++
+ static dbus_bool_t
+ _dbus_open_socket (int              *fd_p,
+                    int               domain,
+@@ -581,7 +615,7 @@ _dbus_set_local_creds (int fd, dbus_bool
+ {
+   dbus_bool_t retval = TRUE;
+ 
+-#if defined(HAVE_CMSGCRED)
++#if defined(HAVE_CMSGCRED) || defined(LOCAL_PEEREID)
+   /* NOOP just to make sure only one codepath is used 
+    *      and to prefer CMSGCRED
+    */
+@@ -1138,6 +1172,9 @@ _dbus_read_credentials_socket  (int     
+     struct cmsgcred cred;
+   } cmsg;
+ 
++#elif defined(LOCAL_PEEREID)
++  pid_t sockpid, sockuid, sockgid;
++
+ #elif defined(LOCAL_CREDS)
+   struct {
+     struct cmsghdr hdr;
+@@ -1170,7 +1207,7 @@ _dbus_read_credentials_socket  (int     
+   msg.msg_iov = &iov;
+   msg.msg_iovlen = 1;
+ 
+-#if defined(HAVE_CMSGCRED) || defined(LOCAL_CREDS)
++#if (defined(HAVE_CMSGCRED) || defined(LOCAL_CREDS)) && !defined(LOCAL_PEEREID)
+   memset (&cmsg, 0, sizeof (cmsg));
+   msg.msg_control = &cmsg;
+   msg.msg_controllen = sizeof (cmsg);
+@@ -1210,7 +1247,7 @@ _dbus_read_credentials_socket  (int     
+       return FALSE;
+     }
+ 
+-#if defined(HAVE_CMSGCRED) || defined(LOCAL_CREDS)
++#if (defined(HAVE_CMSGCRED) || defined(LOCAL_CREDS)) && !defined(LOCAL_PEEREID)
+   if (cmsg.hdr.cmsg_len < sizeof (cmsg) || cmsg.hdr.cmsg_type != SCM_CREDS)
+     {
+       dbus_set_error (error, DBUS_ERROR_FAILED,
+@@ -1240,6 +1277,16 @@ _dbus_read_credentials_socket  (int     
+ #elif defined(HAVE_CMSGCRED)
+     pid_read = cmsg.cred.cmcred_pid;
+     uid_read = cmsg.cred.cmcred_euid;
++#elif defined(LOCAL_PEEREID)
++    if (dbus_nb_getpeereid(client_fd, &sockpid, &sockuid, &sockgid) == TRUE)
++      {
++      pid_read = sockpid;
++      uid_read = sockuid;
++      }
++    else
++      {
++        _dbus_verbose ("Failed to dbus_nb_getpeereid() credentials: %s\n", _dbus_strerror (errno));
++      }
+ #elif defined(LOCAL_CREDS)
+     pid_read = DBUS_PID_UNSET;
+     uid_read = cmsg.cred.sc_uid;
+@@ -1301,7 +1348,7 @@ _dbus_read_credentials_socket  (int     
+       }
+     if (ucred != NULL)
+       ucred_free (ucred);
+-#else /* !SO_PEERCRED && !HAVE_CMSGCRED && !HAVE_GETPEEREID && !HAVE_GETPEERUCRED */
++#else /* !SO_PEERCRED && !HAVE_CMSGCRED && !HAVE_GETPEEREID && !HAVE_GETPEERUCRED && !LOCAL_PEEREID*/
+     _dbus_verbose ("Socket credentials not supported on this OS\n");
+ #endif
+   }
+@@ -1826,7 +1873,26 @@ _dbus_parse_uid (const DBusString      *
    return TRUE;
  }
  
@@ -39,7 +154,7 @@
  _DBUS_DEFINE_GLOBAL_LOCK (atomic);
  
  #if DBUS_USE_ATOMIC_INT_486_COND
-@@ -1891,6 +1913,7 @@
+@@ -1891,6 +1957,7 @@ _dbus_atomic_dec (DBusAtomic *atomic)
    return res;
  #endif
  }
@@ -47,7 +162,7 @@
  
  #ifdef DBUS_BUILD_TESTS
  /** Gets our GID
-@@ -2793,8 +2816,18 @@
+@@ -2793,8 +2860,18 @@ int
  _dbus_printf_string_upper_bound (const char *format,
                                   va_list     args)
  {



Home | Main Index | Thread Index | Old Index