Merge lp:~lightdm-gtk-greeter-team/lightdm-gtk-greeter/get_session_fix into lp:~lightdm-gtk-greeter-team/lightdm-gtk-greeter/trunk

Proposed by Andrew P.
Status: Merged
Merged at revision: 274
Proposed branch: lp:~lightdm-gtk-greeter-team/lightdm-gtk-greeter/get_session_fix
Merge into: lp:~lightdm-gtk-greeter-team/lightdm-gtk-greeter/trunk
Diff against target: 53 lines (+6/-2)
1 file modified
src/lightdm-gtk-greeter.c (+6/-2)
To merge this branch: bzr merge lp:~lightdm-gtk-greeter-team/lightdm-gtk-greeter/get_session_fix
Reviewer Review Type Date Requested Status
Sean Davis Approve
Review via email: mp+217356@code.launchpad.net

Description of the change

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.

To post a comment you must log in.
Revision history for this message
Sean Davis (bluesabre) wrote :

This looks good. Merging now.

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'src/lightdm-gtk-greeter.c'
2--- src/lightdm-gtk-greeter.c 2014-04-23 10:35:11 +0000
3+++ src/lightdm-gtk-greeter.c 2014-04-27 14:25:03 +0000
4@@ -521,7 +521,7 @@
5
6 /* if the user manually selected a session, use it */
7 if (current_session)
8- return current_session;
9+ return g_strdup (current_session);
10
11 menu_items = gtk_container_get_children(GTK_CONTAINER(session_menu));
12
13@@ -549,6 +549,7 @@
14
15 if (!gtk_widget_get_visible (session_menuitem))
16 {
17+ g_free (current_session);
18 current_session = g_strdup (session);
19 return;
20 }
21@@ -567,6 +568,7 @@
22 if (matched)
23 {
24 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menu_iter->data), TRUE);
25+ g_free (current_session);
26 current_session = g_strdup(session);
27 /* Set menuitem-image to session-badge */
28 #if GTK_CHECK_VERSION (3, 0, 0)
29@@ -626,7 +628,7 @@
30
31 /* if the user manually selected a language, use it */
32 if (current_language)
33- return current_language;
34+ return g_strdup (current_language);
35
36 menu_items = gtk_container_get_children(GTK_CONTAINER(language_menu));
37 for (menu_iter = menu_items; menu_iter != NULL; menu_iter = g_list_next(menu_iter))
38@@ -648,6 +650,7 @@
39
40 if (!gtk_widget_get_visible (language_menuitem))
41 {
42+ g_free (current_language);
43 current_language = g_strdup (language);
44 return;
45 }
46@@ -666,6 +669,7 @@
47 if (matched)
48 {
49 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menu_iter->data), TRUE);
50+ g_free (current_language);
51 current_language = g_strdup(language);
52 gtk_menu_item_set_label(GTK_MENU_ITEM(language_menuitem),language);
53 return;

Subscribers

People subscribed via source and target branches