diff --git a/gdm-gdmslave-typo.patch b/gdm-gdmslave-typo.patch new file mode 100644 index 0000000..40eac05 --- /dev/null +++ b/gdm-gdmslave-typo.patch @@ -0,0 +1,75 @@ +From 3b7053e7c20896b69981f52f7f9e295af9dad05f Mon Sep 17 00:00:00 2001 +From: Ray Strode +Date: Thu, 13 Sep 2012 20:20:28 +0000 +Subject: daemon: s/CanSessionsForUnixUser/GetSessionsForUnixUser/ + +Correct typo in method call name. +--- +diff --git a/daemon/gdm-slave.c b/daemon/gdm-slave.c +index 55ef526..6f26d8e 100644 +--- a/daemon/gdm-slave.c ++++ b/daemon/gdm-slave.c +@@ -1412,7 +1412,7 @@ gdm_slave_get_primary_session_id_for_user_from_ck (GdmSlave *slave, + CK_NAME, + CK_MANAGER_PATH, + CK_MANAGER_INTERFACE, +- "CanSessionsForUnixUser", ++ "GetSessionsForUnixUser", + g_variant_new ("(u)", uid), + G_VARIANT_TYPE ("(ao)"), + G_DBUS_CALL_FLAGS_NONE, +-- +cgit v0.9.0.2 + +From 39a38f321c696ef0e98e2b4241a0156040aafa75 Mon Sep 17 00:00:00 2001 +From: Ray Strode +Date: Thu, 13 Sep 2012 21:34:51 +0000 +Subject: slave: more gdm_slave_get_primary_session_id_for_user_from_ck fixes + +It's getting the types wrong, rework it to be (subjectively) clearer. +--- +diff --git a/daemon/gdm-slave.c b/daemon/gdm-slave.c +index 6f26d8e..9195b9b 100644 +--- a/daemon/gdm-slave.c ++++ b/daemon/gdm-slave.c +@@ -1365,12 +1365,11 @@ gdm_slave_get_primary_session_id_for_user_from_ck (GdmSlave *slave, + { + gboolean can_activate_sessions; + GError *error; ++ const char **sessions; ++ int i; + char *primary_ssid; + uid_t uid; + GVariant *reply; +- GVariant *array; +- GVariantIter iter; +- char *ssid; + + error = NULL; + primary_ssid = NULL; +@@ -1426,17 +1425,16 @@ gdm_slave_get_primary_session_id_for_user_from_ck (GdmSlave *slave, + return NULL; + } + +- array = g_variant_get_child_value (reply, 0); +- g_variant_iter_init (&iter, array); +- while (g_variant_iter_loop (&iter, "(&s)", &ssid)) { +- if (x11_session_is_on_seat (slave, ssid, slave->priv->display_seat_id)) { +- primary_ssid = g_strdup (ssid); ++ g_variant_get_child (reply, 0, "^a&o", &sessions); ++ for (i = 0; sessions[i] != NULL; i++) { ++ if (x11_session_is_on_seat (slave, sessions[i], slave->priv->display_seat_id)) { ++ primary_ssid = g_strdup (sessions[i]); + break; + } + } + ++ g_free (sessions); + g_variant_unref (reply); +- g_variant_unref (array); + return primary_ssid; + } + #endif +-- +cgit v0.9.0.2 + diff --git a/gdm.changes b/gdm.changes index 54b233f..fec974a 100644 --- a/gdm.changes +++ b/gdm.changes @@ -1,3 +1,9 @@ +------------------------------------------------------------------- +Thu Sep 13 20:24:57 UTC 2012 - dimstar@opensuse.org + +- Add gdm-gdmslave-typo.patch: Fix type in Method call, which can + cause gdm to crash on login when operated with ConsoleKit. + ------------------------------------------------------------------- Tue Sep 11 19:39:25 UTC 2012 - vuntz@opensuse.org diff --git a/gdm.spec b/gdm.spec index dc16cc5..518a6b5 100644 --- a/gdm.spec +++ b/gdm.spec @@ -59,6 +59,8 @@ Patch34: gdm-default-wm.patch Patch35: gdm-xauthlocalhostname.patch # PATCH-FIX-UPSTREAM gdm-look-at-runlevel.patch bnc540482 bgo599180 vuntz@opensuse.org -- Look at the current runlevel before managing the display again, so we don't do this when shutting down or rebooting Patch40: gdm-look-at-runlevel.patch +# PATCH-FIX-UPSTREAM gdm-gdmslave-typo.patch dimstar@opensuse.org -- Fix crash on login due to wrong method call. Taken from git. +Patch41: gdm-gdmslave-typo.patch BuildRequires: check-devel # needed for directory ownership BuildRequires: dconf @@ -216,6 +218,7 @@ translation-update-upstream %patch34 -p1 %patch35 -p1 %patch40 -p1 +%patch41 -p1 %build NOCONFIGURE=1 gnome-autogen.sh