87 lines
4.8 KiB
Diff
87 lines
4.8 KiB
Diff
# Description: Make PolicyKit work with ConsoleKit 0.3 API as well
|
|
# Ubuntu: https://bugs.launchpad.net/273711
|
|
# Upstream: http://cvs.fedoraproject.org/viewvc/rpms/PolicyKit/devel/pk-ck-api-change.patch?view=markup
|
|
--- policykit-0.9/src/polkit-dbus/polkit-dbus.c 2008-05-30 23:24:44.000000000 +0200
|
|
+++ policykit-0.9.new/src/polkit-dbus/polkit-dbus.c 2008-09-24 13:40:37.000000000 +0200
|
|
@@ -214,11 +214,17 @@
|
|
dbus_message_unref (reply);
|
|
goto out;
|
|
}
|
|
+ /* GetUnixUser API Changed in CK 0.3.0 */
|
|
if (!dbus_message_get_args (reply, NULL,
|
|
- DBUS_TYPE_INT32, &uid,
|
|
+ DBUS_TYPE_UINT32, &uid,
|
|
DBUS_TYPE_INVALID)) {
|
|
- kit_warning ("Invalid GetUnixUser reply from CK");
|
|
- goto out;
|
|
+ /* try the older API */
|
|
+ if (!dbus_message_get_args (reply, NULL,
|
|
+ DBUS_TYPE_INT32, &uid,
|
|
+ DBUS_TYPE_INVALID)) {
|
|
+ kit_warning ("Invalid GetUnixUser reply from CK");
|
|
+ goto out;
|
|
+ }
|
|
}
|
|
dbus_message_unref (message);
|
|
dbus_message_unref (reply);
|
|
@@ -1326,16 +1332,21 @@
|
|
|
|
dbus_error_init (&error);
|
|
seat_objpath = dbus_message_get_path (message);
|
|
- if (!dbus_message_get_args (message, &error,
|
|
- DBUS_TYPE_STRING, &session_objpath,
|
|
+ /* API fixed in CK 0.3 to match spec */
|
|
+ if (!dbus_message_get_args (message, &error,
|
|
+ DBUS_TYPE_OBJECT_PATH, &session_objpath,
|
|
DBUS_TYPE_INVALID)) {
|
|
+ if (!dbus_message_get_args (message, &error,
|
|
+ DBUS_TYPE_STRING, &session_objpath,
|
|
+ DBUS_TYPE_INVALID)) {
|
|
+
|
|
+ /* TODO: should be _pk_critical */
|
|
+ kit_warning ("The SessionAdded signal on the org.freedesktop.ConsoleKit.Seat "
|
|
+ "interface for object %s has the wrong signature! "
|
|
+ "Your system is misconfigured.", seat_objpath);
|
|
|
|
- /* TODO: should be _pk_critical */
|
|
- kit_warning ("The SessionAdded signal on the org.freedesktop.ConsoleKit.Seat "
|
|
- "interface for object %s has the wrong signature! "
|
|
- "Your system is misconfigured.", seat_objpath);
|
|
-
|
|
- goto out;
|
|
+ goto out;
|
|
+ }
|
|
}
|
|
|
|
/* TODO: add to sessions - see polkit_tracker_is_authorization_relevant() */
|
|
@@ -1353,16 +1364,21 @@
|
|
|
|
dbus_error_init (&error);
|
|
seat_objpath = dbus_message_get_path (message);
|
|
- if (!dbus_message_get_args (message, &error,
|
|
- DBUS_TYPE_STRING, &session_objpath,
|
|
+ /* API fixed in CK 0.3 to match spec */
|
|
+ if (!dbus_message_get_args (message, &error,
|
|
+ DBUS_TYPE_OBJECT_PATH, &session_objpath,
|
|
DBUS_TYPE_INVALID)) {
|
|
+ if (!dbus_message_get_args (message, &error,
|
|
+ DBUS_TYPE_STRING, &session_objpath,
|
|
+ DBUS_TYPE_INVALID)) {
|
|
+
|
|
+ /* TODO: should be _pk_critical */
|
|
+ kit_warning ("The SessionRemoved signal on the org.freedesktop.ConsoleKit.Seat "
|
|
+ "interface for object %s has the wrong signature! "
|
|
+ "Your system is misconfigured.", seat_objpath);
|
|
|
|
- /* TODO: should be _pk_critical */
|
|
- kit_warning ("The SessionRemoved signal on the org.freedesktop.ConsoleKit.Seat "
|
|
- "interface for object %s has the wrong signature! "
|
|
- "Your system is misconfigured.", seat_objpath);
|
|
-
|
|
- goto out;
|
|
+ goto out;
|
|
+ }
|
|
}
|
|
|
|
_remove_caller_by_session (pk_tracker, session_objpath);
|