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