Package: gnome-keyring
Version: 2.28.1-2
Severity: important

Hi,

On GNU/kFreeBSD, gnome-keyring-daemon starts successfully but 
gnome-keyring-manager
and seahorse fails while trying to connect to the daemon.

Attached is a patch which fixes this bug.

Regards,

-- System Information:
Debian Release: squeeze/sid
  APT prefers unstable
  APT policy: (500, 'unstable'), (101, 'experimental')
Architecture: kfreebsd-i386 (i686)

Kernel: kFreeBSD 8.0-0-686
Locale: LANG=fr_FR.UTF-8, LC_CTYPE=fr_FR.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash

Versions of packages gnome-keyring depends on:
ii  dbus-x11                      1.2.16-2   simple interprocess messaging syst
ii  gconf2                        2.28.0-1   GNOME configuration database syste
ii  libc0.1                       2.10.2-2   GNU C Library: Shared libraries
ii  libdbus-1-3                   1.2.16-2   simple interprocess messaging syst
ii  libgconf2-4                   2.28.0-1   GNOME configuration database syste
ii  libgcr0                       2.28.1-2   Library for Crypto UI related task
ii  libgcrypt11                   1.4.4-5    LGPL Crypto library - runtime libr
ii  libglib2.0-0                  2.22.2-2   The GLib library of C routines
ii  libgp11-0                     2.28.1-2   Glib wrapper library for PKCS#11 -
ii  libgtk2.0-0                   2.18.3-1   The GTK+ graphical user interface 
ii  libpango1.0-0                 1.26.1-1   Layout and rendering of internatio
ii  libtasn1-3                    2.3-1      Manage ASN.1 structures (runtime)

Versions of packages gnome-keyring recommends:
ii  libpam-gnome-keyring          2.28.1-2   PAM module to unlock the GNOME key

gnome-keyring suggests no packages.

-- no debconf information
--- gnome-keyring-2.28.1/egg/egg-unix-credentials.c	2009-11-28 16:35:59.000000000 +0100
+++ gnome-keyring-2.28.1.new/egg/egg-unix-credentials.c	2009-11-28 16:37:59.000000000 +0100
@@ -45,7 +45,7 @@
 	char buf;
 	int ret;
 	
-#if defined(HAVE_CMSGCRED) || defined(LOCAL_CREDS)
+#if (defined(HAVE_CMSGCRED) || defined(LOCAL_CREDS)) && (!defined(__FreeBSD__) || !defined(__FreeBSD_kernel__))
 	/* Prefer CMSGCRED over LOCAL_CREDS because the former provides the
 	 * remote PID. */
 #if defined(HAVE_CMSGCRED)
@@ -73,7 +73,7 @@
 	msg.msg_iov = &iov;
 	msg.msg_iovlen = 1;
 	
-#if defined(HAVE_CMSGCRED) || defined(LOCAL_CREDS)
+#if (defined(HAVE_CMSGCRED) || defined(LOCAL_CREDS)) && (!defined(__FreeBSD__) || !defined(__FreeBSD_kernel__))
 	memset (&cmsg, 0, sizeof (cmsg));
 	msg.msg_control = (caddr_t) &cmsg;
 	msg.msg_controllen = CMSG_SPACE(sizeof *cred);
@@ -96,8 +96,8 @@
 		fprintf (stderr, "credentials byte was not nul\n");
 		return -1;
 	}
-
-#if defined(HAVE_CMSGCRED) || defined(LOCAL_CREDS)
+	
+#if (defined(HAVE_CMSGCRED) || defined(LOCAL_CREDS)) && (!defined(__FreeBSD__) || !defined(__FreeBSD_kernel__))
 	if (cmsg.hdr.cmsg_len < CMSG_LEN (sizeof *cred) ||
 	    cmsg.hdr.cmsg_type != SCM_CREDS) {
 		fprintf (stderr, "message from recvmsg() was not SCM_CREDS\n");
@@ -164,7 +164,7 @@
 {
 	char buf;
 	int bytes_written;
-#if defined(HAVE_CMSGCRED) && (!defined(LOCAL_CREDS) || defined(__FreeBSD__))
+#if defined(HAVE_CMSGCRED) && (!defined(LOCAL_CREDS) || defined(__FreeBSD__) || defined(__FreeBSD_kernel__))
 	union {
 		struct cmsghdr hdr;
 		char cred[CMSG_SPACE (sizeof (struct cmsgcred))];
@@ -175,7 +175,7 @@
 
 	buf = 0;
 
-#if defined(HAVE_CMSGCRED) && (!defined(LOCAL_CREDS) || defined(__FreeBSD__))
+#if defined(HAVE_CMSGCRED) && (!defined(LOCAL_CREDS) || defined(__FreeBSD__) || defined(__FreeBSD_kernel__))
 	iov.iov_base = &buf;
 	iov.iov_len = 1;
 
@@ -193,7 +193,7 @@
 
 again:
 
-#if defined(HAVE_CMSGCRED) && (!defined(LOCAL_CREDS) || defined(__FreeBSD__))
+#if defined(HAVE_CMSGCRED) && (!defined(LOCAL_CREDS) || defined(__FreeBSD__) || defined(__FreeBSD_kernel__))
 	bytes_written = sendmsg (socket, &msg, 0);
 #else
 	bytes_written = write (socket, &buf, 1);

Reply via email to