misc fixes for GNU/kFreeBSD (VT switching and credential checks)
Package: consolekit
Version: 0.4.6-3
Severity: normal
Tags: patch
User: debian-bsd@lists.debian.org
Usertags: kfreebsd
Attaching a pair of minor fixes for GNU/kFreeBSD.
The upstream part has been forwarded:
https://bugs.freedesktop.org/show_bug.cgi?id=73257
https://bugs.freedesktop.org/show_bug.cgi?id=73258
--
Robert Millan
diff -ur consolekit-0.4.6.old/configure.ac consolekit-0.4.6/configure.ac
--- consolekit-0.4.6.old/configure.ac 2013-07-19 06:24:09.000000000 +0200
+++ consolekit-0.4.6/configure.ac 2014-01-03 15:34:28.000000000 +0100
@@ -83,10 +83,19 @@
EXTRA_COMPILE_WARNINGS(yes)
# Solaris requires libresolv for daemon()
-case "$host" in
- *-*-solaris*)
+case "$host_os" in
+ solaris*)
AC_CHECK_LIB(resolv, daemon, [CONSOLE_KIT_LIBS="$CONSOLE_KIT_LIBS -lresolv"])
;;
+ kfreebsd*-gnu)
+ have_getpeereid=no
+ AC_CHECK_LIB(bsd, getpeereid, have_getpeereid=yes)
+ if test "x$have_getpeereid" = "xyes"; then
+ CONSOLE_KIT_LIBS="${CONSOLE_KIT_LIBS} -lbsd"
+ TOOLS_LIBS="${TOOLS_LIBS} -lbsd"
+ AC_DEFINE(HAVE_GETPEEREID, [], [Define if we have getpeereid])
+ fi
+ ;;
esac
diff -ur consolekit-0.4.6.old/debian/control consolekit-0.4.6/debian/control
--- consolekit-0.4.6.old/debian/control 2013-09-11 23:08:47.000000000 +0200
+++ consolekit-0.4.6/debian/control 2013-12-29 01:55:52.000000000 +0100
@@ -16,6 +16,7 @@
libpam0g-dev,
libpolkit-gobject-1-dev (>= 0.92),
zlib1g-dev,
+ libbsd-dev (>= 0.3.0~) [kfreebsd-any],
dh-autoreconf
Standards-Version: 3.9.3
Vcs-Git: git://git.debian.org/git/pkg-utopia/consolekit.git
diff -ur consolekit-0.4.6.old/src/ck-sysdeps-unix.c consolekit-0.4.6/src/ck-sysdeps-unix.c
--- consolekit-0.4.6.old/src/ck-sysdeps-unix.c 2013-07-19 06:15:28.000000000 +0200
+++ consolekit-0.4.6/src/ck-sysdeps-unix.c 2014-01-03 15:34:41.000000000 +0100
@@ -100,6 +100,15 @@
if (ucred != NULL) {
ucred_free (ucred);
}
+#elif defined(HAVE_GETPEEREID)
+ gid_t dummy;
+
+ if (getpeereid (socket_fd, &uid_read, &dummy) == 0) {
+ ret = TRUE;
+ } else {
+ g_warning ("Failed to getpeereid() credentials: %s\n",
+ g_strerror (errno));
+ }
#else /* !SO_PEERCRED && !HAVE_GETPEERUCRED */
g_warning ("Socket credentials not supported on this OS\n");
#endif
@@ -129,7 +138,7 @@
{
#ifdef __linux__
struct vt_stat vts;
-#elif defined(__FreeBSD__)
+#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
int vers;
#endif
int kb_ok;
@@ -137,7 +146,7 @@
errno = 0;
#ifdef __linux__
kb_ok = (ioctl (fd, VT_GETSTATE, &vts) == 0);
-#elif defined(__FreeBSD__)
+#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
kb_ok = (ioctl (fd, CONS_GETVERS, &vers) == 0);
#else
kb_ok = 1;
Reply to: