lightdm-gtk-greeter-team team mailing list archive
-
lightdm-gtk-greeter-team team
-
Mailing list archive
-
Message #00430
[Merge] lp:~lightdm-gtk-greeter-team/lightdm-gtk-greeter/get_session_fix into lp:lightdm-gtk-greeter
Andrew P. has proposed merging lp:~lightdm-gtk-greeter-team/lightdm-gtk-greeter/get_session_fix into lp:lightdm-gtk-greeter.
Requested reviews:
LightDM Gtk+ Greeter Development Team (lightdm-gtk-greeter-team)
Related bugs:
Bug #1311933 in LightDM GTK+ Greeter: "New users fail when ~session is not part of show-indicators= in the config."
https://bugs.launchpad.net/lightdm-gtk-greeter/+bug/1311933
For more details, see:
https://code.launchpad.net/~lightdm-gtk-greeter-team/lightdm-gtk-greeter/get_session_fix/+merge/217356
get_session() returns current_session instead of its copy. Returned value will be freed in start_session() -> current_session becomes corrupted. The same is true for get_language() and current_language.
This patch fix it.
--
https://code.launchpad.net/~lightdm-gtk-greeter-team/lightdm-gtk-greeter/get_session_fix/+merge/217356
Your team LightDM Gtk+ Greeter Development Team is requested to review the proposed merge of lp:~lightdm-gtk-greeter-team/lightdm-gtk-greeter/get_session_fix into lp:lightdm-gtk-greeter.
=== modified file 'src/lightdm-gtk-greeter.c'
--- src/lightdm-gtk-greeter.c 2014-04-23 10:35:11 +0000
+++ src/lightdm-gtk-greeter.c 2014-04-27 14:25:03 +0000
@@ -521,7 +521,7 @@
/* if the user manually selected a session, use it */
if (current_session)
- return current_session;
+ return g_strdup (current_session);
menu_items = gtk_container_get_children(GTK_CONTAINER(session_menu));
@@ -549,6 +549,7 @@
if (!gtk_widget_get_visible (session_menuitem))
{
+ g_free (current_session);
current_session = g_strdup (session);
return;
}
@@ -567,6 +568,7 @@
if (matched)
{
gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menu_iter->data), TRUE);
+ g_free (current_session);
current_session = g_strdup(session);
/* Set menuitem-image to session-badge */
#if GTK_CHECK_VERSION (3, 0, 0)
@@ -626,7 +628,7 @@
/* if the user manually selected a language, use it */
if (current_language)
- return current_language;
+ return g_strdup (current_language);
menu_items = gtk_container_get_children(GTK_CONTAINER(language_menu));
for (menu_iter = menu_items; menu_iter != NULL; menu_iter = g_list_next(menu_iter))
@@ -648,6 +650,7 @@
if (!gtk_widget_get_visible (language_menuitem))
{
+ g_free (current_language);
current_language = g_strdup (language);
return;
}
@@ -666,6 +669,7 @@
if (matched)
{
gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menu_iter->data), TRUE);
+ g_free (current_language);
current_language = g_strdup(language);
gtk_menu_item_set_label(GTK_MENU_ITEM(language_menuitem),language);
return;
References