diff -u gdm-2.30.2.is.2.30.0/debian/control gdm-2.30.2.is.2.30.0/debian/control --- gdm-2.30.2.is.2.30.0/debian/control +++ gdm-2.30.2.is.2.30.0/debian/control @@ -28,7 +28,7 @@ iso-codes, libdevkit-power-gobject-dev (>= 008) Standards-Version: 3.8.4 -Vcs-Bzr: https://code.launchpad.net/~ubuntu-desktop/gdm/ubuntu +Vcs-Bzr: https://code.launchpad.net/~ubuntu-desktop/gdm/lucid Package: gdm Conflicts: gdm-snapshot, fast-user-switch-applet, libxklavier15 (<< 4.0-0ubuntu2), xsplash (<< 0.8) diff -u gdm-2.30.2.is.2.30.0/debian/changelog gdm-2.30.2.is.2.30.0/debian/changelog --- gdm-2.30.2.is.2.30.0/debian/changelog +++ gdm-2.30.2.is.2.30.0/debian/changelog @@ -1,3 +1,17 @@ +gdm (2.30.2.is.2.30.0-0ubuntu2) lucid-proposed; urgency=low + + * debian/patches/94_git_null_free_crash.patch: + - git change to fix a crasher (lp: #403441) + * debian/patches/95_git_name_escaping.patch: + - git change to fix escaping issues leading to crashes (lp: #499690), + or to having incorrect usernames displayed (lp: #585128) + + [ Didier Roche ] + * debian/patches/30_don_t_save_failsafe_session.patch: (LP: #542345) + - return FALSE instead of exiting on .desktop file without a comment + + -- Sebastien Bacher Thu, 17 Jun 2010 15:41:17 +0200 + gdm (2.30.2.is.2.30.0-0ubuntu1) lucid-proposed; urgency=low * The 2.30.2 upstream version introduces new issues so basing a new stable diff -u gdm-2.30.2.is.2.30.0/debian/patches/30_don_t_save_failsafe_session.patch gdm-2.30.2.is.2.30.0/debian/patches/30_don_t_save_failsafe_session.patch --- gdm-2.30.2.is.2.30.0/debian/patches/30_don_t_save_failsafe_session.patch +++ gdm-2.30.2.is.2.30.0/debian/patches/30_don_t_save_failsafe_session.patch @@ -130,9 +130,9 @@ + comment = NULL; + res = get_session_comment_for_file (filename, &comment); + if (! res) { -+ g_critical ("Cannot read specified session file: %s", filename); ++ g_warning ("Cannot read specified session file: %s", filename); + g_free (filename); -+ exit (1); ++ return FALSE; + } + g_free (filename); + only in patch2: unchanged: --- gdm-2.30.2.is.2.30.0.orig/debian/patches/95_git_name_escaping.patch +++ gdm-2.30.2.is.2.30.0/debian/patches/95_git_name_escaping.patch @@ -0,0 +1,77 @@ +diff --git a/gui/simple-greeter/gdm-chooser-widget.c b/gui/simple-greeter/gdm-chooser-widget.c +index a52b687..7153c93 100644 +--- a/gui/simple-greeter/gdm-chooser-widget.c ++++ b/gui/simple-greeter/gdm-chooser-widget.c +@@ -1501,8 +1501,6 @@ compare_item (GtkTreeModel *model, + GdmChooserWidget *widget; + char *name_a; + char *name_b; +- char *text_a; +- char *text_b; + gulong prio_a; + gulong prio_b; + gboolean is_separate_a; +@@ -1571,12 +1569,24 @@ compare_item (GtkTreeModel *model, + result *= direction; + } else if (is_separate_b == is_separate_a) { + if (prio_a == prio_b) { ++ char *text_a; ++ char *text_b; ++ ++ text_a = NULL; ++ text_b = NULL; + pango_parse_markup (name_a, -1, 0, &attrs, &text_a, NULL, NULL); ++ if (text_a == NULL) { ++ g_debug ("GdmChooserWidget: unable to parse markup: '%s'", name_a); ++ } + pango_parse_markup (name_b, -1, 0, &attrs, &text_b, NULL, NULL); +- if (text_a && text_b) +- result = g_utf8_collate (text_a, text_b); +- else +- result = g_utf8_collate (name_a, name_b); ++ if (text_b == NULL) { ++ g_debug ("GdmChooserWidget: unable to parse markup: '%s'", name_b); ++ } ++ if (text_a != NULL && text_b != NULL) { ++ result = g_utf8_collate (text_a, text_b); ++ } else { ++ result = g_utf8_collate (name_a, name_b); ++ } + g_free (text_a); + g_free (text_b); + } else if (prio_a > prio_b) { +@@ -1614,6 +1614,7 @@ name_cell_data_func (GtkTreeViewColumn *tree_column, + { + gboolean is_in_use; + char *name; ++ char *escaped; + char *markup; + + name = NULL; +@@ -1622,15 +1623,22 @@ name_cell_data_func (GtkTreeViewColumn *tree_column, + CHOOSER_ITEM_IS_IN_USE_COLUMN, &is_in_use, + CHOOSER_NAME_COLUMN, &name, + -1); ++ if (name != NULL) { ++ escaped = g_markup_escape_text (name, -1); ++ g_free (name); ++ } else { ++ escaped = NULL; ++ } + + if (is_in_use) { + markup = g_strdup_printf ("%s\n" + "%s", +- name ? name : "(null)", widget->priv->in_use_message); ++ escaped != NULL ? escaped : "(none)", ++ widget->priv->in_use_message); + } else { +- markup = g_strdup_printf ("%s", name ? name : "(null)"); ++ markup = g_strdup_printf ("%s", escaped != NULL ? escaped : "(none)"); + } +- g_free (name); ++ g_free (escaped); + + g_object_set (cell, "markup", markup, NULL); + g_free (markup); + only in patch2: unchanged: --- gdm-2.30.2.is.2.30.0.orig/debian/patches/94_git_null_free_crash.patch +++ gdm-2.30.2.is.2.30.0/debian/patches/94_git_null_free_crash.patch @@ -0,0 +1,34 @@ +From d14a5028871d64f7edaf698d3d66a499e57692f9 Mon Sep 17 00:00:00 2001 +From: William Jon McCann +Date: Wed, 16 Jun 2010 23:53:47 +0000 +Subject: g_array_free doesn't allow NULLs + +https://bugzilla.gnome.org/show_bug.cgi?id=589536 +diff -Nur -x '*.orig' -x '*~' gdm-2.30.2.is.2.30.0/daemon/gdm-slave.c gdm-2.30.2.is.2.30.0.new/daemon/gdm-slave.c +--- gdm-2.30.2.is.2.30.0/daemon/gdm-slave.c 2010-06-17 15:37:10.000000000 +0200 ++++ gdm-2.30.2.is.2.30.0.new/daemon/gdm-slave.c 2010-06-17 15:37:26.000000000 +0200 +@@ -1641,7 +1641,9 @@ + g_free (slave->priv->display_x11_authority_file); + g_free (slave->priv->parent_display_name); + g_free (slave->priv->parent_display_x11_authority_file); +- g_array_free (slave->priv->display_x11_cookie, TRUE); ++ if (slave->priv->display_x11_cookie != NULL) { ++ g_array_free (slave->priv->display_x11_cookie, TRUE); ++ } + + G_OBJECT_CLASS (gdm_slave_parent_class)->finalize (object); + } +diff -Nur -x '*.orig' -x '*~' gdm-2.30.2.is.2.30.0/daemon/gdm-xdmcp-display-factory.c gdm-2.30.2.is.2.30.0.new/daemon/gdm-xdmcp-display-factory.c +--- gdm-2.30.2.is.2.30.0/daemon/gdm-xdmcp-display-factory.c 2010-03-29 23:42:03.000000000 +0200 ++++ gdm-2.30.2.is.2.30.0.new/daemon/gdm-xdmcp-display-factory.c 2010-06-17 15:37:11.000000000 +0200 +@@ -2308,8 +2308,10 @@ + GArray *cookie; + char *name; + ++ cookie = NULL; + gdm_display_get_x11_cookie (display, &cookie, NULL); + ++ name = NULL; + gdm_display_get_x11_display_name (display, &name, NULL); + + g_debug ("GdmXdmcpDisplayFactory: Sending authorization key for display %s", name ? name : "(null)");