[gdm] session: fix corruption of GDM_LANG environment variable



commit a1fbd8cb1199a9a918e2be212075b6d3d89c0914
Author: Ray Strode <rstrode redhat com>
Date:   Mon Aug 24 12:49:07 2015 -0400

    session: fix corruption of GDM_LANG environment variable
    
    commit cab736cfb32aa25677287ff261ae1cb11f036e89 introduced a
    bug that leads to GDM_LANG getting set to gibberish.  This
    causes spew to the log and, in some cases, prevents successful
    login.
    
    This commit addresses the problem by duplicating a string that
    is, otherwise, freed before its second use.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=754033

 daemon/gdm-session.c |    6 ++++--
 1 files changed, 4 insertions(+), 2 deletions(-)
---
diff --git a/daemon/gdm-session.c b/daemon/gdm-session.c
index 6faa7cd..982b5eb 100644
--- a/daemon/gdm-session.c
+++ b/daemon/gdm-session.c
@@ -2451,7 +2451,7 @@ set_up_session_environment (GdmSession *self)
 {
         GdmSessionDisplayMode display_mode;
         gchar *desktop_names;
-        const char *locale;
+        char *locale;
 
         gdm_session_set_environment_variable (self,
                                               "GDMSESSION",
@@ -2470,7 +2470,7 @@ set_up_session_environment (GdmSession *self)
 
         set_up_session_language (self);
 
-        locale = get_default_language_name (self);
+        locale = g_strdup (get_default_language_name (self));
 
         if (locale != NULL && locale[0] != '\0') {
                 gdm_session_set_environment_variable (self,
@@ -2481,6 +2481,8 @@ set_up_session_environment (GdmSession *self)
                                                       locale);
         }
 
+        g_free (locale);
+
         display_mode = gdm_session_get_display_mode (self);
         if (display_mode == GDM_SESSION_DISPLAY_MODE_REUSE_VT) {
                 gdm_session_set_environment_variable (self,


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]