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

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: