File gnome-packagekit-fix-polkit-usage.patch of Package gnome-packagekit.486

From 62645dad953b33676908f78ef959c3a53ff9b636 Mon Sep 17 00:00:00 2001
From: Frederic Crozat <fcrozat@suse.com>
Date: Tue, 19 Aug 2014 18:37:09 +0200
Subject: [PATCH] Properly call polkit and dbus for reboot

Polkit subject was incorrect and could cause polkitd to crash (fdo#53905).
Reboot call on logind through dbus should be sync, otherwise it is not
done at all. Those issues were initially found and fixed by Evangelos Foutras
in xfce4-session systemd proxy code
(https://bugzilla.xfce.org/show_bug.cgi?id=8729)

Fixes https://bugzilla.novell.com/show_bug.cgi?id=881221
---
 src/systemd-proxy.c | 18 +++++++++---------
 1 file changed, 9 insertions(+), 9 deletions(-)

diff --git a/src/systemd-proxy.c b/src/systemd-proxy.c
index 50fec25..adad6fe 100644
--- a/src/systemd-proxy.c
+++ b/src/systemd-proxy.c
@@ -44,7 +44,7 @@ systemd_proxy_new (void)
         proxy = g_new0 (SystemdProxy, 1);
 
         proxy->authority = polkit_authority_get_sync (NULL, NULL);
-        proxy->subject = polkit_unix_session_new_for_process_sync (getpid(), NULL, NULL);
+        proxy->subject = polkit_unix_process_new_for_owner(getpid(), 0, -1);
 
         return proxy;
 }
@@ -71,7 +71,7 @@ systemd_proxy_can_restart (SystemdProxy  *proxy,
                                                          proxy->subject,
                                                          SYSTEMD_REBOOT_ACTION,
                                                          NULL,
-                                                         POLKIT_CHECK_AUTHORIZATION_FLAGS_NONE,
+                                                         POLKIT_CHECK_AUTHORIZATION_FLAGS_ALLOW_USER_INTERACTION,
                                                          NULL,
                                                          &local_error);
         if (res == NULL) {
@@ -94,13 +94,13 @@ systemd_proxy_restart (SystemdProxy  *proxy,
         GDBusConnection *bus;
 
         bus = g_bus_get_sync (G_BUS_TYPE_SYSTEM, NULL, NULL);
-        g_dbus_connection_call (bus,
-                                SYSTEMD_DBUS_NAME,
-                                SYSTEMD_DBUS_PATH,
-                                SYSTEMD_DBUS_INTERFACE,
-                                "Reboot",
-                                g_variant_new ("(b)", TRUE),
-                                NULL, 0, G_MAXINT, NULL, NULL, NULL);
+        g_dbus_connection_call_sync (bus,
+                                    SYSTEMD_DBUS_NAME,
+                                    SYSTEMD_DBUS_PATH,
+                                    SYSTEMD_DBUS_INTERFACE,
+                                    "Reboot",
+                                    g_variant_new ("(b)", TRUE),
+                                    NULL, 0, G_MAXINT, NULL, NULL);
         g_object_unref (bus);
 
         return TRUE;
-- 
1.8.4.5
openSUSE Build Service is sponsored by