diff options
Diffstat (limited to 'debian/patches/01_polkit-1.patch')
-rw-r--r-- | debian/patches/01_polkit-1.patch | 155 |
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__ */ |