diff --git a/polkit-0.97-subject-scanning.patch b/polkit-0.97-subject-scanning.patch new file mode 100644 index 0000000..d4ab680 --- /dev/null +++ b/polkit-0.97-subject-scanning.patch @@ -0,0 +1,76 @@ +From 17f0600529dc926ae4a0c85dc56c393cc09e4011 Mon Sep 17 00:00:00 2001 +From: David Zeuthen +Date: Thu, 12 Aug 2010 20:49:25 +0000 +Subject: Fix scanning of unix-process subjects + +In particular accept both "unix-process:," and +"unix-process:". For the latter, return an error if we cannot +lookup the starttime (for example if the given pid references a +non-existing process). + +Signed-off-by: David Zeuthen +--- +diff --git a/src/polkit/polkitsubject.c b/src/polkit/polkitsubject.c +index 19d60b9..51e60e0 100644 +--- a/src/polkit/polkitsubject.c ++++ b/src/polkit/polkitsubject.c +@@ -24,6 +24,7 @@ + #endif + + #include ++#include + + #include "polkitsubject.h" + #include "polkitunixprocess.h" +@@ -222,8 +223,6 @@ polkit_subject_from_string (const gchar *str, + GError **error) + { + PolkitSubject *subject; +- guint64 val; +- gchar *endptr; + + g_return_val_if_fail (str != NULL, NULL); + g_return_val_if_fail (error == NULL || *error == NULL, NULL); +@@ -234,12 +233,15 @@ polkit_subject_from_string (const gchar *str, + + if (g_str_has_prefix (str, "unix-process:")) + { +- val = g_ascii_strtoull (str + sizeof "unix-process:" - 1, +- &endptr, +- 10); +- if (*endptr == '\0') ++ gint scanned_pid; ++ guint64 scanned_starttime; ++ if (sscanf (str, "unix-process:%d:%" G_GUINT64_FORMAT, &scanned_pid, &scanned_starttime) == 2) + { +- subject = polkit_unix_process_new ((gint) val); ++ subject = polkit_unix_process_new_full (scanned_pid, scanned_starttime); ++ } ++ else if (sscanf (str, "unix-process:%d", &scanned_pid) == 1) ++ { ++ subject = polkit_unix_process_new_full (scanned_pid, 0); + if (polkit_unix_process_get_start_time (POLKIT_UNIX_PROCESS (subject)) == 0) + { + g_object_unref (subject); +@@ -247,8 +249,8 @@ polkit_subject_from_string (const gchar *str, + g_set_error (error, + POLKIT_ERROR, + POLKIT_ERROR_FAILED, +- "No process with pid %" G_GUINT64_FORMAT, +- val); ++ "Unable to determine start time for process with pid %d", ++ scanned_pid); + } + } + } +@@ -266,7 +268,7 @@ polkit_subject_from_string (const gchar *str, + g_set_error (error, + POLKIT_ERROR, + POLKIT_ERROR_FAILED, +- "Malformed subject string '%s'", ++ "Malformed subject string `%s'", + str); + } + +-- +cgit v0.8.3-6-g21f6 diff --git a/polkit.spec b/polkit.spec index f26fb2c..4e5d0cf 100644 --- a/polkit.spec +++ b/polkit.spec @@ -1,27 +1,34 @@ Summary: PolicyKit Authorization Framework Name: polkit Version: 0.97 -Release: 3%{?dist} +Release: 4%{?dist} License: LGPLv2+ URL: http://www.freedesktop.org/wiki/Software/PolicyKit Source0: http://hal.freedesktop.org/releases/%{name}-%{version}.tar.gz Group: System Environment/Libraries -BuildRequires: glib2-devel >= 2.25.11 +BuildRequires: glib2-devel >= 2.25.12 BuildRequires: expat-devel BuildRequires: pam-devel BuildRequires: gtk-doc BuildRequires: intltool BuildRequires: gobject-introspection-devel -# Upstream fix -Patch0: 0001-Fix-ConsoleKit-interaction-bug.patch - Requires: ConsoleKit Requires: dbus Obsoletes: PolicyKit <= 0.10 Provides: PolicyKit = 0.11 +# polkit saw some API/ABI changes from 0.96 to 0.97 so require a +# sufficiently new polkit-gnome package +Conflicts: polkit-gnome < 0.97 + +# upstream +Patch0: polkit-0.97-subject-scanning.patch +# Upstream fix +Patch1: 0001-Fix-ConsoleKit-interaction-bug.patch + + %description PolicyKit is a toolkit for defining and handling authorizations. It is used for allowing unprivileged processes to speak to privileged @@ -64,7 +71,8 @@ Roles and default policy for desktop usage. %prep %setup -q -%patch0 -p1 -b .ck-interaction +%patch0 -p1 -b .subject-scanning +%patch1 -p1 -b .ck-interaction %build %configure --enable-gtk-doc --disable-static --libexecdir=%{_libexecdir}/polkit-1 --disable-introspection --enable-examples @@ -182,9 +190,15 @@ EOF %{_datadir}/gtk-doc/html/* %changelog -* Wed Aug 18 2010 Matthias Clasen - 0.97-3 +* Wed Aug 18 2010 Matthias Clasen - 0.97-4 - Fix a ConsoleKit interaction bug +* Fri Aug 13 2010 David Zeuthen - 0.97-3 +- Add a patch to make pkcheck(1) work the way libvirtd uses it (#623257) +- Require GLib >= 2.25.12 instead of 2.25.11 +- Ensure polkit-gnome packages earlier than 0.97 are not used with + these packages + * Mon Aug 09 2010 David Zeuthen - 0.97-2 - Rebuild