aboutsummaryrefslogtreecommitdiff
path: root/debian/patches/01_polkit-1.patch
diff options
context:
space:
mode:
Diffstat (limited to 'debian/patches/01_polkit-1.patch')
-rw-r--r--debian/patches/01_polkit-1.patch155
1 files changed, 155 insertions, 0 deletions
diff --git a/debian/patches/01_polkit-1.patch b/debian/patches/01_polkit-1.patch
new file mode 100644
index 0000000..03660cb
--- /dev/null
+++ b/debian/patches/01_polkit-1.patch
@@ -0,0 +1,155 @@
+--- indicator-session-0.1.4/configure.ac 2009-09-22 09:12:00.000000000 +0200
++++ indicator-session-0.1.4.new/configure.ac 2009-09-22 09:11:42.000000000 +0200
+@@ -28,6 +28,7 @@
+ GTK_REQUIRED_VERSION=2.12
+ INDICATOR_REQUIRED_VERSION=0.2.0
+ DBUSMENUGTK_REQUIRED_VERSION=0.1.1
++POLKIT_REQUIRED_VERSION=0.92
+
+ PKG_CHECK_MODULES(APPLET, gtk+-2.0 >= $GTK_REQUIRED_VERSION
+ indicator >= $INDICATOR_REQUIRED_VERSION
+@@ -53,7 +54,8 @@
+ AC_SUBST(SESSIONERVICE_LIBS)
+
+ PKG_CHECK_MODULES(GTKLOGOUTHELPER, gtk+-2.0 >= $GTK_REQUIRED_VERSION
+- polkit-gnome)
++ polkit-gobject-1 >= $POLKIT_REQUIRED_VERSION)
++
+
+ AC_SUBST(GTKLOGOUTHELPER_CFLAGS)
+ AC_SUBST(GTKLOGOUTHELPER_LIBS)
+diff -ur indicator-session-0.1.4/src/gtk-dialog/ck-pk-helper.c indicator-session-0.1.4.new/src/gtk-dialog/ck-pk-helper.c
+--- indicator-session-0.1.4/src/gtk-dialog/ck-pk-helper.c 2009-09-22 09:12:00.000000000 +0200
++++ indicator-session-0.1.4.new/src/gtk-dialog/ck-pk-helper.c 2009-09-22 09:11:43.000000000 +0200
+@@ -24,7 +24,7 @@
+ #include <unistd.h>
+ #include <glib.h>
+ #include <dbus/dbus-glib.h>
+-#include <polkit-gnome/polkit-gnome.h>
++#include <polkit/polkit.h>
+
+ #include "logout-dialog.h"
+ #include "ck-pk-helper.h"
+@@ -170,67 +170,53 @@
+ }
+ }
+
+- PolKitResult polres;
++ PolkitAuthorizationResult *polres = NULL;
++ gboolean ret = FALSE;
+ if (pk_can_do_action(pk_action, &polres)) {
+- if (polres == POLKIT_RESULT_YES) {
+- return FALSE;
++ if (polkit_authorization_result_get_is_challenge (polres)) {
++ ret = TRUE;
+ }
+- return TRUE;
++ g_debug ("pk_require_auth(%s): authorized, is_challenge: %i", pk_action, ret);
++ } else {
++ g_debug ("pk_require_auth(%s): not authorized", pk_action);
++ }
++ if (polres) {
++ g_object_unref (polres);
+ }
+- return FALSE;
++ return ret;
+ }
+
+ gboolean
+-pk_can_do_action (const gchar *action_id, PolKitResult * pol_result)
++pk_can_do_action (const gchar *action_id, PolkitAuthorizationResult ** pol_result)
+ {
+- PolKitGnomeContext *gnome_context;
+- PolKitAction *action;
+- PolKitCaller *caller;
+- DBusError dbus_error;
+- PolKitError *error;
+- PolKitResult result;
+-
+- gnome_context = polkit_gnome_context_get (NULL);
+-
+- if (gnome_context == NULL) {
+- return FALSE;
+- }
+-
+- if (gnome_context->pk_tracker == NULL) {
+- return FALSE;
+- }
+-
+- dbus_error_init (&dbus_error);
+- caller = polkit_tracker_get_caller_from_pid (gnome_context->pk_tracker,
+- getpid (),
+- &dbus_error);
+- dbus_error_free (&dbus_error);
+-
+- if (caller == NULL) {
+- return FALSE;
+- }
+-
+- action = polkit_action_new ();
+- if (!polkit_action_set_action_id (action, action_id)) {
+- polkit_action_unref (action);
+- polkit_caller_unref (caller);
+- return FALSE;
+- }
+-
+- result = POLKIT_RESULT_UNKNOWN;
+- error = NULL;
+- result = polkit_context_is_caller_authorized (gnome_context->pk_context,
+- action, caller, FALSE,
+- &error);
+- if (polkit_error_is_set (error)) {
+- polkit_error_free (error);
+- }
+- polkit_action_unref (action);
+- polkit_caller_unref (caller);
++ PolkitAuthority *authority;
++ PolkitSubject *subject;
++ PolkitAuthorizationResult *result;
++ gboolean ret;
++
++ authority = polkit_authority_get();
++ if (!authority) {
++ g_warning ("Could not get PolicyKit authority instance");
++ return FALSE;
++ }
++ subject = polkit_unix_process_new (getpid());
+
+- if (pol_result != NULL) {
+- *pol_result = result;
+- }
++ result = polkit_authority_check_authorization_sync (authority, subject, action_id, NULL, 0, NULL, NULL);
++ g_object_unref (authority);
+
+- return result != POLKIT_RESULT_NO && result != POLKIT_RESULT_UNKNOWN;
++ ret = FALSE;
++ if (result) {
++ ret = polkit_authorization_result_get_is_authorized (result) ||
++ polkit_authorization_result_get_is_challenge (result);
++ g_debug ("pk_can_do_action(%s): %i", action_id, ret);
++ } else {
++ g_warning ("pk_can_do_action(%s): check_authorization returned NULL", action_id);
++ }
++ if (pol_result) {
++ *pol_result = result;
++ } else {
++ g_object_unref (result);
++ }
++ return ret;
++
+ }
+diff -ur indicator-session-0.1.4/src/gtk-dialog/ck-pk-helper.h indicator-session-0.1.4.new/src/gtk-dialog/ck-pk-helper.h
+--- indicator-session-0.1.4/src/gtk-dialog/ck-pk-helper.h 2009-09-22 09:12:00.000000000 +0200
++++ indicator-session-0.1.4.new/src/gtk-dialog/ck-pk-helper.h 2009-09-22 09:11:43.000000000 +0200
+@@ -24,9 +24,9 @@
+ #ifndef __CK_PK_HELPER_H__
+ #define __CK_PK_HELPER_H__ 1
+
+-#include <polkit-gnome/polkit-gnome.h>
++#include <polkit/polkit.h>
+
+ gboolean pk_require_auth (LogoutDialogAction action);
+-gboolean pk_can_do_action (const gchar *action_id, PolKitResult * pol_result);
++gboolean pk_can_do_action (const gchar *action_id, PolkitAuthorizationResult ** pol_result);
+
+ #endif /* __CK_PK_HELPER__ */