From 9da18acb6d6db7104ba861e532031594fa4d8db3 Mon Sep 17 00:00:00 2001 From: Koen Kooi Date: Mon, 5 Mar 2012 08:38:30 +0100 Subject: polkit 0.104: add 2 backports from upstream to fix crashes during auth (From OE-Core rev: bcb8e65ab3f7d7f0f884f05c758f8a779c260306) Signed-off-by: Koen Kooi Signed-off-by: Richard Purdie --- ...ession-Set-error-if-we-cannot-find-a-sess.patch | 70 ++++++++++++++++++++++ ...ession-Actually-return-TRUE-if-a-session-.patch | 46 ++++++++++++++ meta/recipes-extended/polkit/polkit_0.104.bb | 4 +- 3 files changed, 119 insertions(+), 1 deletion(-) create mode 100644 meta/recipes-extended/polkit/polkit-0.104/0001-PolkitUnixSession-Set-error-if-we-cannot-find-a-sess.patch create mode 100644 meta/recipes-extended/polkit/polkit-0.104/0002-PolkitUnixSession-Actually-return-TRUE-if-a-session-.patch (limited to 'meta/recipes-extended') diff --git a/meta/recipes-extended/polkit/polkit-0.104/0001-PolkitUnixSession-Set-error-if-we-cannot-find-a-sess.patch b/meta/recipes-extended/polkit/polkit-0.104/0001-PolkitUnixSession-Set-error-if-we-cannot-find-a-sess.patch new file mode 100644 index 0000000000..aaa989e78e --- /dev/null +++ b/meta/recipes-extended/polkit/polkit-0.104/0001-PolkitUnixSession-Set-error-if-we-cannot-find-a-sess.patch @@ -0,0 +1,70 @@ +From c46d2d13eac240d2a609b2dd8fc617ea18a78bfa Mon Sep 17 00:00:00 2001 +From: David Zeuthen +Date: Mon, 6 Feb 2012 11:24:53 -0500 +Subject: [PATCH 1/2] PolkitUnixSession: Set error if we cannot find a session for the given pid + +Also, don't treat the integer returned by sd_pid_get_session() as a +boolean because that's just confusing. Also, don't confuse memory +supposed to be freed by g_free() and free(3) with each other. See + + https://bugzilla.redhat.com/show_bug.cgi?id=787222 + +for more details. + +Signed-off-by: David Zeuthen +--- + +Upstream-status: Accepted + + src/polkit/polkitunixsession-systemd.c | 21 ++++++++++++++++----- + 1 files changed, 16 insertions(+), 5 deletions(-) + +diff --git a/src/polkit/polkitunixsession-systemd.c b/src/polkit/polkitunixsession-systemd.c +index e7e913f..94a7ee4 100644 +--- a/src/polkit/polkitunixsession-systemd.c ++++ b/src/polkit/polkitunixsession-systemd.c +@@ -23,6 +23,7 @@ + # include "config.h" + #endif + ++#include + #include + #include "polkitunixsession.h" + #include "polkitsubject.h" +@@ -450,9 +451,8 @@ polkit_unix_session_initable_init (GInitable *initable, + GError **error) + { + PolkitUnixSession *session = POLKIT_UNIX_SESSION (initable); +- gboolean ret; +- +- ret = FALSE; ++ gboolean ret = FALSE; ++ char *s; + + if (session->session_id != NULL) + { +@@ -461,8 +461,19 @@ polkit_unix_session_initable_init (GInitable *initable, + goto out; + } + +- if (!sd_pid_get_session (session->pid, &session->session_id)) +- ret = TRUE; ++ if (sd_pid_get_session (session->pid, &s) == 0) ++ { ++ session->session_id = g_strdup (s); ++ free (s); ++ ret = TRUE; ++ goto out; ++ } ++ ++ g_set_error (error, ++ POLKIT_ERROR, ++ POLKIT_ERROR_FAILED, ++ "No session for pid %d", ++ (gint) session->pid); + + out: + return ret; +-- +1.7.2.5 + diff --git a/meta/recipes-extended/polkit/polkit-0.104/0002-PolkitUnixSession-Actually-return-TRUE-if-a-session-.patch b/meta/recipes-extended/polkit/polkit-0.104/0002-PolkitUnixSession-Actually-return-TRUE-if-a-session-.patch new file mode 100644 index 0000000000..3fdc7318d5 --- /dev/null +++ b/meta/recipes-extended/polkit/polkit-0.104/0002-PolkitUnixSession-Actually-return-TRUE-if-a-session-.patch @@ -0,0 +1,46 @@ +From 8fb8b406bab50c5ef8c5d4f743e3f13924bd5f73 Mon Sep 17 00:00:00 2001 +From: David Zeuthen +Date: Mon, 6 Feb 2012 11:26:06 -0500 +Subject: [PATCH 2/2] PolkitUnixSession: Actually return TRUE if a session exists + +Also, don't treat the integer returned by sd_session_get_uid() as a +boolean because that's just confusing. + +Signed-off-by: David Zeuthen +--- + +Upstream-status: Accepted + + src/polkit/polkitunixsession-systemd.c | 12 +++++------- + 1 files changed, 5 insertions(+), 7 deletions(-) + +diff --git a/src/polkit/polkitunixsession-systemd.c b/src/polkit/polkitunixsession-systemd.c +index 94a7ee4..8a8bf65 100644 +--- a/src/polkit/polkitunixsession-systemd.c ++++ b/src/polkit/polkitunixsession-systemd.c +@@ -361,17 +361,15 @@ polkit_unix_session_to_string (PolkitSubject *subject) + + static gboolean + polkit_unix_session_exists_sync (PolkitSubject *subject, +- GCancellable *cancellable, +- GError **error) ++ GCancellable *cancellable, ++ GError **error) + { + PolkitUnixSession *session = POLKIT_UNIX_SESSION (subject); +- gboolean ret; ++ gboolean ret = FALSE; + uid_t uid; + +- ret = FALSE; +- +- if (!sd_session_get_uid (session->session_id, &uid)) +- ret = FALSE; ++ if (sd_session_get_uid (session->session_id, &uid) == 0) ++ ret = TRUE; + + return ret; + } +-- +1.7.2.5 + diff --git a/meta/recipes-extended/polkit/polkit_0.104.bb b/meta/recipes-extended/polkit/polkit_0.104.bb index 5dc82c5df6..dfbd300582 100644 --- a/meta/recipes-extended/polkit/polkit_0.104.bb +++ b/meta/recipes-extended/polkit/polkit_0.104.bb @@ -11,12 +11,14 @@ DEPENDS = "expat dbus-glib eggdbus intltool-native" PACKAGECONFIG = "${@base_contains('DISTRO_FEATURES', 'pam', 'pam', '', d)}" PACKAGECONFIG[pam] = "--with-authfw=pam,--with-authfw=none,libpam,libpam" -PR = "r3" +PR = "r4" PAM_SRC_URI = "file://polkit-1_pam.patch" SRC_URI = "http://hal.freedesktop.org/releases/polkit-${PV}.tar.gz \ file://introspection.patch \ ${@base_contains('DISTRO_FEATURES', 'pam', '${PAM_SRC_URI}', '', d)} \ + file://0001-PolkitUnixSession-Set-error-if-we-cannot-find-a-sess.patch \ + file://0002-PolkitUnixSession-Actually-return-TRUE-if-a-session-.patch \ " SRC_URI[md5sum] = "e380b4c6fb1e7bccf854e92edc0a8ce1" -- cgit v1.2.3-54-g00ecf