summaryrefslogtreecommitdiff
path: root/testing/polkit
diff options
context:
space:
mode:
Diffstat (limited to 'testing/polkit')
-rw-r--r--testing/polkit/PKGBUILD43
-rwxr-xr-xtesting/polkit/autogen.sh123
-rw-r--r--testing/polkit/fix-empty-wheel.patch47
-rw-r--r--testing/polkit/logind+ConsoleKit.patch638
-rw-r--r--testing/polkit/polkit.install18
-rw-r--r--testing/polkit/polkit.pam7
6 files changed, 0 insertions, 876 deletions
diff --git a/testing/polkit/PKGBUILD b/testing/polkit/PKGBUILD
deleted file mode 100644
index 70bb6e4d8..000000000
--- a/testing/polkit/PKGBUILD
+++ /dev/null
@@ -1,43 +0,0 @@
-# $Id: PKGBUILD 169160 2012-10-18 19:22:54Z jgc $
-# Maintainer: Jan de Groot <jgc@archlinux.org>
-
-pkgname=polkit
-pkgver=0.107
-pkgrel=4
-pkgdesc="Application development toolkit for controlling system-wide privileges"
-arch=(i686 x86_64)
-license=('LGPL')
-url="http://www.freedesktop.org/wiki/Software/PolicyKit"
-depends=('glib2' 'pam' 'expat' 'libsystemd' 'js')
-makedepends=('intltool' 'gtk-doc' 'gobject-introspection')
-replaces=('policykit')
-options=('!libtool')
-install=polkit.install
-source=(http://www.freedesktop.org/software/polkit/releases/$pkgname-$pkgver.tar.gz
- polkit.pam fix-empty-wheel.patch)
-md5sums=('0e4f9c53f43fd1b25ac3f0d2e09b2ae1'
- '6564f95878297b954f0572bc1610dd15'
- 'c99ab2a7919ad0b69fde4804c043b07f')
-
-build() {
- cd $pkgname-$pkgver
-
- # https://bugs.archlinux.org/task/31717
- patch -Np1 -i ../fix-empty-wheel.patch
-
- ./configure --prefix=/usr --sysconfdir=/etc \
- --localstatedir=/var --libexecdir=/usr/lib/polkit-1 \
- --with-systemdsystemunitdir=/usr/lib/systemd/system \
- --disable-static --enable-gtk-doc
- make
-}
-
-package() {
- cd $pkgname-$pkgver
- make DESTDIR="$pkgdir" install
-
- chown 102 "$pkgdir/etc/polkit-1/rules.d"
- chown 102 "$pkgdir/usr/share/polkit-1/rules.d"
-
- install -m644 "$srcdir/polkit.pam" "$pkgdir/etc/pam.d/polkit-1"
-}
diff --git a/testing/polkit/autogen.sh b/testing/polkit/autogen.sh
deleted file mode 100755
index d08b00a49..000000000
--- a/testing/polkit/autogen.sh
+++ /dev/null
@@ -1,123 +0,0 @@
-#!/bin/sh
-# Run this to generate all the initial makefiles, etc.
-
-srcdir=`dirname $0`
-test -z "$srcdir" && srcdir=.
-
-DIE=0
-
-(test -f $srcdir/configure.ac) || {
- echo -n "**Error**: Directory $srcdir does not look like the"
- echo " top-level package directory"
- exit 1
-}
-
-olddir=`pwd`
-cd "$srcdir"
-
-touch ChangeLog
-
-(autoconf --version) < /dev/null > /dev/null 2>&1 || {
- echo
- echo "**Error**: You must have autoconf installed."
- echo "Download the appropriate package for your distribution,"
- echo "or get the source tarball at ftp://ftp.gnu.org/pub/gnu/"
- DIE=1
-}
-
-(grep "^AM_PROG_LIBTOOL" configure.ac >/dev/null) && {
- (libtoolize --version) < /dev/null > /dev/null 2>&1 || {
- echo
- echo "**Error**: You must have libtool installed."
- echo "You can get it from: ftp://ftp.gnu.org/pub/gnu/"
- DIE=1
- }
-}
-
-(gtkdocize --flavour no-tmpl) < /dev/null > /dev/null 2>&1 || {
- echo
- echo "You must have gtk-doc installed to compile $PROJECT."
- echo "Install the appropriate package for your distribution,"
- echo "or get the source tarball at http://ftp.gnome.org/pub/GNOME/sources/gtk-doc/"
- DIE=1
-}
-
-(automake --version) < /dev/null > /dev/null 2>&1 || {
- echo
- echo "**Error**: You must have automake installed."
- echo "You can get it from: ftp://ftp.gnu.org/pub/gnu/"
- DIE=1
- NO_AUTOMAKE=yes
-}
-
-
-# if no automake, don't bother testing for aclocal
-test -n "$NO_AUTOMAKE" || (aclocal --version) < /dev/null > /dev/null 2>&1 || {
- echo
- echo "**Error**: Missing aclocal. The version of automake"
- echo "installed doesn't appear recent enough."
- echo "You can get automake from ftp://ftp.gnu.org/pub/gnu/"
- DIE=1
-}
-
-
-# if no automake, don't bother testing for autoreconf
-test -n "$NO_AUTOMAKE" || (autoreconf --version) < /dev/null > /dev/null 2>&1 || {
- echo
- echo "**Error**: You must have autoreconf installed."
- echo "You can get autoreconf from ..."
- DIE=1
-}
-
-
-if test "$DIE" -eq 1; then
- exit 1
-fi
-
-if test -z "$*"; then
- echo "**Warning**: I am going to run configure with no arguments."
- echo "If you wish to pass any to it, please specify them on the"
- echo $0 " command line."
- echo
-fi
-
-case $CC in
-xlc )
- am_opt=--include-deps;;
-esac
-
- aclocalinclude="$ACLOCAL_FLAGS"
-
- echo "Running autoreconf on test/mocklibc ..."
- (cd "test/mocklibc"; autoreconf --install)
-
- if grep "^AM_PROG_LIBTOOL" configure.ac >/dev/null; then
- if test -z "$NO_LIBTOOLIZE" ; then
- echo "Running libtoolize..."
- libtoolize --force --copy
- fi
- fi
- echo "Running aclocal $aclocalinclude ..."
- aclocal $aclocalinclude
- if grep "^AM_CONFIG_HEADER" configure.ac >/dev/null; then
- echo "Running autoheader..."
- autoheader
- fi
- echo "Running automake --gnu -Wno-portability $am_opt ..."
- automake --add-missing --gnu -Wno-portability $am_opt
- echo "Running autoconf ..."
- autoconf
-
-intltoolize --copy --force --automake || exit 1
-
-cd "$olddir"
-
-conf_flags="--enable-maintainer-mode --enable-gtk-doc"
-
-if test x$NOCONFIGURE = x; then
- echo "Running $srcdir/configure $conf_flags $@ ..."
- $srcdir/configure $conf_flags "$@" \
- && echo "Now type make to compile." || exit 1
-else
- echo "Skipping configure process."
-fi
diff --git a/testing/polkit/fix-empty-wheel.patch b/testing/polkit/fix-empty-wheel.patch
deleted file mode 100644
index d6f99c43d..000000000
--- a/testing/polkit/fix-empty-wheel.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-From fa04223240d46641b0773dbf9f7d72f529046bea Mon Sep 17 00:00:00 2001
-From: David Zeuthen <zeuthen@gmail.com>
-Date: Tue, 18 Sep 2012 18:47:06 +0000
-Subject: Fall back to authenticating as uid 0 if the list of admin identities is empty
-
-For example, this can happen if the wheel group has no members. This
-was reported in Red Hat bug 834494, see
-
- https://bugzilla.redhat.com/show_bug.cgi?id=834494
-
-Signed-off-by: David Zeuthen <zeuthen@gmail.com>
----
-diff --git a/src/polkitbackend/polkitbackendinteractiveauthority.c b/src/polkitbackend/polkitbackendinteractiveauthority.c
-index 1d4a555..3bd2f0b 100644
---- a/src/polkitbackend/polkitbackendinteractiveauthority.c
-+++ b/src/polkitbackend/polkitbackendinteractiveauthority.c
-@@ -1293,15 +1293,11 @@ polkit_backend_interactive_authority_get_admin_identities (PolkitBackendInteract
- PolkitDetails *details)
- {
- PolkitBackendInteractiveAuthorityClass *klass;
-- GList *ret;
-+ GList *ret = NULL;
-
- klass = POLKIT_BACKEND_INTERACTIVE_AUTHORITY_GET_CLASS (authority);
-
-- if (klass->get_admin_identities == NULL)
-- {
-- ret = g_list_prepend (NULL, polkit_unix_user_new (0));
-- }
-- else
-+ if (klass->get_admin_identities != NULL)
- {
- ret = klass->get_admin_identities (authority,
- caller,
-@@ -2257,6 +2253,10 @@ authentication_agent_initiate_challenge (AuthenticationAgent *agent,
- }
- }
-
-+ /* Fall back to uid 0 if no users are available (rhbz #834494) */
-+ if (user_identities == NULL)
-+ user_identities = g_list_prepend (NULL, polkit_unix_user_new (0));
-+
- session = authentication_session_new (agent,
- cookie,
- subject,
---
-cgit v0.9.0.2-2-gbebe
diff --git a/testing/polkit/logind+ConsoleKit.patch b/testing/polkit/logind+ConsoleKit.patch
deleted file mode 100644
index 042d1043a..000000000
--- a/testing/polkit/logind+ConsoleKit.patch
+++ /dev/null
@@ -1,638 +0,0 @@
-From ba143769e17e4bbc1f2b0c88e735f993dfb3c873 Mon Sep 17 00:00:00 2001
-From: Tom Gundersen <teg@jklm.no>
-Date: Tue, 7 Aug 2012 21:06:18 +0200
-Subject: [PATCH] session tracking: always require consolekit
-
-Only systemd is now optional at compile-time, and if enabled we fallback to consolekit
-at runtime, if not booted with systemd.
-
-Bits-stolen-from: Jan Alexander Steffens <jan.steffens@gmail.com>
-Signed-off-by: Tom Gundersen <teg@jklm.no>
----
- configure.ac | 6 +-
- src/polkit/polkitunixsession-systemd.c | 96 ++++++-
- src/polkitbackend/polkitbackendjsauthority.c | 10 +-
- .../polkitbackendsessionmonitor-systemd.c | 313 +++++++++++++++++++--
- 4 files changed, 380 insertions(+), 45 deletions(-)
-
-diff --git a/configure.ac b/configure.ac
-index 7a0d938..1d1e4ba 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -163,15 +163,15 @@ AC_ARG_ENABLE([libsystemd-login],
- [enable_libsystemd_login=auto])
- if test "$enable_libsystemd_login" != "no"; then
- PKG_CHECK_MODULES(LIBSYSTEMD_LOGIN,
-- [libsystemd-login],
-+ [libsystemd-login libsystemd-daemon],
- have_libsystemd_login=yes,
- have_libsystemd_login=no)
- if test "$have_libsystemd_login" = "yes"; then
-- SESSION_TRACKING=libsystemd-login
-+ SESSION_TRACKING="libsystemd-login (with ConsoleKit runtime fallback)"
- AC_DEFINE([HAVE_LIBSYSTEMD_LOGIN], 1, [Define to 1 if libsystemd-login is available])
- else
- if test "$enable_libsystemd_login" = "yes"; then
-- AC_MSG_ERROR([libsystemd-login support requested but libsystemd-login library not found])
-+ AC_MSG_ERROR([libsystemd-login support requested but systemd libraries not found])
- fi
- fi
- fi
-diff --git a/src/polkit/polkitunixsession-systemd.c b/src/polkit/polkitunixsession-systemd.c
-index 8a8bf65..bb89044 100644
---- a/src/polkit/polkitunixsession-systemd.c
-+++ b/src/polkit/polkitunixsession-systemd.c
-@@ -1,5 +1,5 @@
- /*
-- * Copyright (C) 2011 Red Hat, Inc.
-+ * Copyright (C) 2008, 2011 Red Hat, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
-@@ -17,6 +17,7 @@
- * Boston, MA 02111-1307, USA.
- *
- * Author: Matthias Clasen
-+ * Author: David Zeuthen <davidz@redhat.com>
- */
-
- #ifdef HAVE_CONFIG_H
-@@ -31,6 +32,7 @@
- #include "polkitprivate.h"
-
- #include <systemd/sd-login.h>
-+#include <systemd/sd-daemon.h>
-
- /**
- * SECTION:polkitunixsession
-@@ -367,9 +369,41 @@ polkit_unix_session_exists_sync (PolkitSubject *subject,
- PolkitUnixSession *session = POLKIT_UNIX_SESSION (subject);
- gboolean ret = FALSE;
- uid_t uid;
-+ GDBusConnection *connection; /* consolekit */
-+ GVariant *result; /* consolekit */
-
-- if (sd_session_get_uid (session->session_id, &uid) == 0)
-- ret = TRUE;
-+ if (sd_booted())
-+ {
-+ if (sd_session_get_uid (session->session_id, &uid) == 0)
-+ ret = TRUE;
-+ }
-+ else /* consolekit */
-+ {
-+ connection = g_bus_get_sync (G_BUS_TYPE_SYSTEM, cancellable, error);
-+ if (connection == NULL)
-+ goto out;
-+
-+ result = g_dbus_connection_call_sync (connection,
-+ "org.freedesktop.ConsoleKit", /* name */
-+ session->session_id, /* object path */
-+ "org.freedesktop.ConsoleKit.Session", /* interface name */
-+ "GetUser", /* method */
-+ NULL, /* parameters */
-+ G_VARIANT_TYPE ("(u)"),
-+ G_DBUS_CALL_FLAGS_NONE,
-+ -1,
-+ cancellable,
-+ error);
-+ if (result == NULL)
-+ goto out;
-+
-+ ret = TRUE;
-+ g_variant_unref (result);
-+
-+ out:
-+ if (connection != NULL)
-+ g_object_unref (connection);
-+ }
-
- return ret;
- }
-@@ -451,29 +485,61 @@ polkit_unix_session_initable_init (GInitable *initable,
- PolkitUnixSession *session = POLKIT_UNIX_SESSION (initable);
- gboolean ret = FALSE;
- char *s;
-+ GDBusConnection *connection; /* consolekit */
-+ GVariant *result; /* consolekit */
-+ connection = NULL; /* consolekit */
-
- if (session->session_id != NULL)
- {
- /* already set, nothing to do */
-- ret = TRUE;
-- goto out;
-+ return TRUE;
- }
-
-- if (sd_pid_get_session (session->pid, &s) == 0)
-+ if (sd_booted())
-+ {
-+ if (sd_pid_get_session (session->pid, &s) == 0)
-+ {
-+ session->session_id = g_strdup (s);
-+ free (s);
-+ return TRUE;
-+ }
-+
-+ g_set_error (error,
-+ POLKIT_ERROR,
-+ POLKIT_ERROR_FAILED,
-+ "No session for pid %d",
-+ (gint) session->pid);
-+ }
-+ else /* consolekit */
- {
-- session->session_id = g_strdup (s);
-- free (s);
-+ connection = g_bus_get_sync (G_BUS_TYPE_SYSTEM, cancellable, error);
-+ if (connection == NULL)
-+ goto out;
-+
-+ result = g_dbus_connection_call_sync (connection,
-+ "org.freedesktop.ConsoleKit", /* name */
-+ "/org/freedesktop/ConsoleKit/Manager", /* object path */
-+ "org.freedesktop.ConsoleKit.Manager", /* interface name */
-+ "GetSessionForUnixProcess", /* method */
-+ g_variant_new ("(u)", session->pid), /* parameters */
-+ G_VARIANT_TYPE ("(o)"),
-+ G_DBUS_CALL_FLAGS_NONE,
-+ -1,
-+ cancellable,
-+ error);
-+ if (result == NULL)
-+ goto out;
-+
-+ g_variant_get (result, "(o)", &session->session_id);
-+ g_variant_unref (result);
-+
- ret = TRUE;
-- goto out;
- }
-
-- g_set_error (error,
-- POLKIT_ERROR,
-- POLKIT_ERROR_FAILED,
-- "No session for pid %d",
-- (gint) session->pid);
-+ out:
-+ if (connection != NULL) /* consolekit */
-+ g_object_unref (connection);
-
--out:
- return ret;
- }
-
-diff --git a/src/polkitbackend/polkitbackendjsauthority.c b/src/polkitbackend/polkitbackendjsauthority.c
-index bdfaa73..ee38739 100644
---- a/src/polkitbackend/polkitbackendjsauthority.c
-+++ b/src/polkitbackend/polkitbackendjsauthority.c
-@@ -36,6 +36,7 @@
-
- #ifdef HAVE_LIBSYSTEMD_LOGIN
- #include <systemd/sd-login.h>
-+#include <systemd/sd-daemon.h>
- #endif /* HAVE_LIBSYSTEMD_LOGIN */
-
- #include <jsapi.h>
-@@ -731,11 +732,14 @@ subject_to_jsval (PolkitBackendJsAuthority *authority,
- }
-
- #ifdef HAVE_LIBSYSTEMD_LOGIN
-- if (sd_pid_get_session (pid, &session_str) == 0)
-+ if (sd_booted())
- {
-- if (sd_session_get_seat (session_str, &seat_str) == 0)
-+ if (sd_pid_get_session (pid, &session_str) == 0)
- {
-- /* do nothing */
-+ if (sd_session_get_seat (session_str, &seat_str) == 0)
-+ {
-+ /* do nothing */
-+ }
- }
- }
- #endif /* HAVE_LIBSYSTEMD_LOGIN */
-diff --git a/src/polkitbackend/polkitbackendsessionmonitor-systemd.c b/src/polkitbackend/polkitbackendsessionmonitor-systemd.c
-index 58593c3..5114dfa 100644
---- a/src/polkitbackend/polkitbackendsessionmonitor-systemd.c
-+++ b/src/polkitbackend/polkitbackendsessionmonitor-systemd.c
-@@ -26,11 +26,15 @@
- #include <string.h>
- #include <glib/gstdio.h>
- #include <systemd/sd-login.h>
-+#include <systemd/sd-daemon.h>
- #include <stdlib.h>
-
- #include <polkit/polkit.h>
- #include "polkitbackendsessionmonitor.h"
-
-+/* consolekit */
-+#define CKDB_PATH "/var/run/ConsoleKit/database"
-+
- /* <internal>
- * SECTION:polkitbackendsessionmonitor
- * @title: PolkitBackendSessionMonitor
-@@ -126,6 +130,11 @@ struct _PolkitBackendSessionMonitor
- GDBusConnection *system_bus;
-
- GSource *sd_source;
-+
-+ /* consolekit */
-+ GKeyFile *database;
-+ GFileMonitor *database_monitor;
-+ time_t database_mtime;
- };
-
- struct _PolkitBackendSessionMonitorClass
-@@ -148,6 +157,101 @@ G_DEFINE_TYPE (PolkitBackendSessionMonitor, polkit_backend_session_monitor, G_TY
-
- /* ---------------------------------------------------------------------------------------------------- */
-
-+/* consolekit */
-+static gboolean
-+reload_database (PolkitBackendSessionMonitor *monitor,
-+ GError **error)
-+{
-+ gboolean ret;
-+ struct stat statbuf;
-+
-+ ret = FALSE;
-+
-+ if (monitor->database != NULL)
-+ {
-+ g_key_file_free (monitor->database);
-+ monitor->database = NULL;
-+ }
-+
-+ if (stat (CKDB_PATH, &statbuf) != 0)
-+ {
-+ g_set_error (error,
-+ G_IO_ERROR,
-+ g_io_error_from_errno (errno),
-+ "Error statting file " CKDB_PATH ": %s",
-+ strerror (errno));
-+ goto out;
-+ }
-+
-+ monitor->database_mtime = statbuf.st_mtime;
-+
-+ monitor->database = g_key_file_new ();
-+ if (!g_key_file_load_from_file (monitor->database,
-+ CKDB_PATH,
-+ G_KEY_FILE_NONE,
-+ error))
-+ {
-+ goto out;
-+ }
-+
-+ ret = TRUE;
-+
-+ out:
-+ return ret;
-+}
-+
-+static gboolean
-+ensure_database (PolkitBackendSessionMonitor *monitor,
-+ GError **error)
-+{
-+ gboolean ret = FALSE;
-+
-+ if (monitor->database != NULL)
-+ {
-+ struct stat statbuf;
-+
-+ if (stat (CKDB_PATH, &statbuf) != 0)
-+ {
-+ g_set_error (error,
-+ G_IO_ERROR,
-+ g_io_error_from_errno (errno),
-+ "Error statting file " CKDB_PATH " to check timestamp: %s",
-+ strerror (errno));
-+ goto out;
-+ }
-+ if (statbuf.st_mtime == monitor->database_mtime)
-+ {
-+ ret = TRUE;
-+ goto out;
-+ }
-+ }
-+
-+ ret = reload_database (monitor, error);
-+
-+ out:
-+ return ret;
-+}
-+
-+static void
-+on_file_monitor_changed (GFileMonitor *file_monitor,
-+ GFile *file,
-+ GFile *other_file,
-+ GFileMonitorEvent event_type,
-+ gpointer user_data)
-+{
-+ PolkitBackendSessionMonitor *monitor = POLKIT_BACKEND_SESSION_MONITOR (user_data);
-+
-+ /* throw away cache */
-+ if (monitor->database != NULL)
-+ {
-+ g_key_file_free (monitor->database);
-+ monitor->database = NULL;
-+ }
-+ g_signal_emit (monitor, signals[CHANGED_SIGNAL], 0);
-+}
-+
-+/* consolekit - end */
-+
- static gboolean
- sessions_changed (gpointer user_data)
- {
-@@ -163,6 +267,7 @@ static void
- polkit_backend_session_monitor_init (PolkitBackendSessionMonitor *monitor)
- {
- GError *error;
-+ GFile *file; /* consolekit */
-
- error = NULL;
- monitor->system_bus = g_bus_get_sync (G_BUS_TYPE_SYSTEM, NULL, &error);
-@@ -172,9 +277,41 @@ polkit_backend_session_monitor_init (PolkitBackendSessionMonitor *monitor)
- g_error_free (error);
- }
-
-- monitor->sd_source = sd_source_new ();
-- g_source_set_callback (monitor->sd_source, sessions_changed, monitor, NULL);
-- g_source_attach (monitor->sd_source, NULL);
-+ if (sd_booted())
-+ {
-+ monitor->sd_source = sd_source_new ();
-+ g_source_set_callback (monitor->sd_source, sessions_changed, monitor, NULL);
-+ g_source_attach (monitor->sd_source, NULL);
-+ }
-+ else /* consolekit */
-+ {
-+ error = NULL;
-+ if (!ensure_database (monitor, &error))
-+ {
-+ g_printerr ("Error loading " CKDB_PATH ": %s", error->message);
-+ g_error_free (error);
-+ }
-+
-+ error = NULL;
-+ file = g_file_new_for_path (CKDB_PATH);
-+ monitor->database_monitor = g_file_monitor_file (file,
-+ G_FILE_MONITOR_NONE,
-+ NULL,
-+ &error);
-+ g_object_unref (file);
-+ if (monitor->database_monitor == NULL)
-+ {
-+ g_printerr ("Error monitoring " CKDB_PATH ": %s", error->message);
-+ g_error_free (error);
-+ }
-+ else
-+ {
-+ g_signal_connect (monitor->database_monitor,
-+ "changed",
-+ G_CALLBACK (on_file_monitor_changed),
-+ monitor);
-+ }
-+ }
- }
-
- static void
-@@ -191,6 +328,14 @@ polkit_backend_session_monitor_finalize (GObject *object)
- g_source_unref (monitor->sd_source);
- }
-
-+ /* consolekit */
-+ if (monitor->database_monitor != NULL)
-+ g_object_unref (monitor->database_monitor);
-+
-+ if (monitor->database != NULL)
-+ g_key_file_free (monitor->database);
-+ /* consolekit - end */
-+
- if (G_OBJECT_CLASS (polkit_backend_session_monitor_parent_class)->finalize != NULL)
- G_OBJECT_CLASS (polkit_backend_session_monitor_parent_class)->finalize (object);
- }
-@@ -258,6 +403,8 @@ polkit_backend_session_monitor_get_user_for_subject (PolkitBackendSessionMonitor
- GError **error)
- {
- PolkitIdentity *ret;
-+ GError *local_error; /* consolekit */
-+ gchar *group; /* consolekit */
- guint32 uid;
-
- ret = NULL;
-@@ -300,16 +447,38 @@ polkit_backend_session_monitor_get_user_for_subject (PolkitBackendSessionMonitor
- else if (POLKIT_IS_UNIX_SESSION (subject))
- {
-
-- if (sd_session_get_uid (polkit_unix_session_get_session_id (POLKIT_UNIX_SESSION (subject)), &uid) < 0)
-+ if (sd_booted())
- {
-- g_set_error (error,
-- POLKIT_ERROR,
-- POLKIT_ERROR_FAILED,
-- "Error getting uid for session");
-- goto out;
-+ if (sd_session_get_uid (polkit_unix_session_get_session_id (POLKIT_UNIX_SESSION (subject)), &uid) < 0)
-+ {
-+ g_set_error (error,
-+ POLKIT_ERROR,
-+ POLKIT_ERROR_FAILED,
-+ "Error getting uid for session");
-+ goto out;
-+ }
-+
-+ ret = polkit_unix_user_new (uid);
-+ }
-+ else /* consolekit */
-+ {
-+ if (!ensure_database (monitor, error))
-+ {
-+ g_prefix_error (error, "Error getting user for session: Error ensuring CK database at " CKDB_PATH ": ");
-+ goto out;
-+ }
-+
-+ group = g_strdup_printf ("Session %s", polkit_unix_session_get_session_id (POLKIT_UNIX_SESSION (subject)));
-+ local_error = NULL;
-+ uid = g_key_file_get_integer (monitor->database, group, "uid", &local_error);
-+ if (local_error != NULL)
-+ {
-+ g_propagate_prefixed_error (error, local_error, "Error getting uid using " CKDB_PATH ": ");
-+ g_free (group);
-+ goto out;
-+ }
-+ g_free (group);
- }
--
-- ret = polkit_unix_user_new (uid);
- }
-
- out:
-@@ -337,20 +506,43 @@ polkit_backend_session_monitor_get_session_for_subject (PolkitBackendSessionMoni
-
- if (POLKIT_IS_UNIX_PROCESS (subject))
- {
-- gchar *session_id;
-- pid_t pid;
-+ if (sd_booted())
-+ {
-+ gchar *session_id;
-+ pid_t pid;
-
-- pid = polkit_unix_process_get_pid (POLKIT_UNIX_PROCESS (subject));
-- if (sd_pid_get_session (pid, &session_id) < 0)
-- goto out;
-+ pid = polkit_unix_process_get_pid (POLKIT_UNIX_PROCESS (subject));
-+ if (sd_pid_get_session (pid, &session_id) < 0)
-+ goto out;
-
-- session = polkit_unix_session_new (session_id);
-- free (session_id);
-+ session = polkit_unix_session_new (session_id);
-+ free (session_id);
-+ }
-+ else /* consolekit */
-+ {
-+ const gchar *session_id;
-+ GVariant *result;
-+ result = g_dbus_connection_call_sync (monitor->system_bus,
-+ "org.freedesktop.ConsoleKit",
-+ "/org/freedesktop/ConsoleKit/Manager",
-+ "org.freedesktop.ConsoleKit.Manager",
-+ "GetSessionForUnixProcess",
-+ g_variant_new ("(u)", polkit_unix_process_get_pid (POLKIT_UNIX_PROCESS (subject))),
-+ G_VARIANT_TYPE ("(o)"),
-+ G_DBUS_CALL_FLAGS_NONE,
-+ -1, /* timeout_msec */
-+ NULL, /* GCancellable */
-+ error);
-+ if (result == NULL)
-+ goto out;
-+ g_variant_get (result, "(&o)", &session_id);
-+ session = polkit_unix_session_new (session_id);
-+ g_variant_unref (result);
-+ }
- }
- else if (POLKIT_IS_SYSTEM_BUS_NAME (subject))
- {
- guint32 pid;
-- gchar *session_id;
- GVariant *result;
-
- result = g_dbus_connection_call_sync (monitor->system_bus,
-@@ -369,11 +561,35 @@ polkit_backend_session_monitor_get_session_for_subject (PolkitBackendSessionMoni
- g_variant_get (result, "(u)", &pid);
- g_variant_unref (result);
-
-- if (sd_pid_get_session (pid, &session_id) < 0)
-- goto out;
-+ if (sd_booted())
-+ {
-+ gchar *session_id;
-+ if (sd_pid_get_session (pid, &session_id) < 0)
-+ goto out;
-
-- session = polkit_unix_session_new (session_id);
-- free (session_id);
-+ session = polkit_unix_session_new (session_id);
-+ free (session_id);
-+ }
-+ else /* consolekit */
-+ {
-+ const gchar *session_id;
-+ result = g_dbus_connection_call_sync (monitor->system_bus,
-+ "org.freedesktop.ConsoleKit",
-+ "/org/freedesktop/ConsoleKit/Manager",
-+ "org.freedesktop.ConsoleKit.Manager",
-+ "GetSessionForUnixProcess",
-+ g_variant_new ("(u)", pid),
-+ G_VARIANT_TYPE ("(o)"),
-+ G_DBUS_CALL_FLAGS_NONE,
-+ -1, /* timeout_msec */
-+ NULL, /* GCancellable */
-+ error);
-+ if (result == NULL)
-+ goto out;
-+ g_variant_get (result, "(&o)", &session_id);
-+ session = polkit_unix_session_new (session_id);
-+ g_variant_unref (result);
-+ }
- }
- else
- {
-@@ -389,12 +605,58 @@ polkit_backend_session_monitor_get_session_for_subject (PolkitBackendSessionMoni
- return session;
- }
-
-+static gboolean
-+get_boolean (PolkitBackendSessionMonitor *monitor,
-+ PolkitSubject *session,
-+ const gchar *key_name)
-+{
-+ gboolean ret;
-+ gchar *group;
-+ GError *error;
-+
-+ ret = FALSE;
-+
-+ group = g_strdup_printf ("Session %s", polkit_unix_session_get_session_id (POLKIT_UNIX_SESSION (session)));
-+
-+ error = NULL;
-+ if (!ensure_database (monitor, &error))
-+ {
-+ g_printerr ("Error getting boolean `%s' in group `%s': Error ensuring CK database at " CKDB_PATH ": %s",
-+ key_name,
-+ group,
-+ error->message);
-+ g_error_free (error);
-+ goto out;
-+ }
-+
-+ error = NULL;
-+ ret = g_key_file_get_boolean (monitor->database, group, key_name, &error);
-+ if (error != NULL)
-+ {
-+ g_printerr ("Error looking %s using " CKDB_PATH " for %s: %s\n",
-+ key_name,
-+ group,
-+ error->message);
-+ g_error_free (error);
-+ goto out;
-+ }
-+
-+ out:
-+ g_free (group);
-+ return ret;
-+}
-+
- gboolean
- polkit_backend_session_monitor_is_session_local (PolkitBackendSessionMonitor *monitor,
- PolkitSubject *session)
- {
- char *seat;
-
-+ if (!sd_booted()) /* consolekit */
-+ {
-+ return get_boolean (monitor, session, "is_local");
-+ }
-+
- if (!sd_session_get_seat (polkit_unix_session_get_session_id (POLKIT_UNIX_SESSION (session)), &seat))
- {
- free (seat);
-@@ -409,6 +671,9 @@ gboolean
- polkit_backend_session_monitor_is_session_active (PolkitBackendSessionMonitor *monitor,
- PolkitSubject *session)
- {
-- return sd_session_is_active (polkit_unix_session_get_session_id (POLKIT_UNIX_SESSION (session)));
-+ if (sd_booted())
-+ return sd_session_is_active (polkit_unix_session_get_session_id (POLKIT_UNIX_SESSION (session)));
-+ else /* consolekit */
-+ return get_boolean (monitor, session, "is_active");
- }
-
---
-1.7.11.4
-
diff --git a/testing/polkit/polkit.install b/testing/polkit/polkit.install
deleted file mode 100644
index fbb98919e..000000000
--- a/testing/polkit/polkit.install
+++ /dev/null
@@ -1,18 +0,0 @@
-post_install() {
- getent group polkitd >/dev/null || groupadd -g 102 polkitd
- getent passwd polkitd >/dev/null || useradd -c 'Policy Kit Daemon' -u 102 -g polkitd -d '/' -s /bin/false polkitd
- passwd -l polkitd &>/dev/null
-}
-
-post_upgrade() {
- post_install
-}
-
-post_remove() {
- if getent passwd polkitd >/dev/null; then
- userdel polkitd
- fi
- if getent group polkitd >/dev/null; then
- groupdel polkitd
- fi
-}
diff --git a/testing/polkit/polkit.pam b/testing/polkit/polkit.pam
deleted file mode 100644
index 04f53e0db..000000000
--- a/testing/polkit/polkit.pam
+++ /dev/null
@@ -1,7 +0,0 @@
-auth requisite pam_nologin.so
-auth required pam_env.so
-auth required pam_unix.so
-account required pam_unix.so
-session required pam_limits.so
-session required pam_unix.so
-password required pam_unix.so