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);