[gdm] manager: Don't double-free x11_display_name



commit fae288e364970678a3cde0b8ca37bd67fc2bf764
Author: Jan Alexander Steffens (heftig) <jan steffens gmail com>
Date:   Wed Apr 15 13:39:18 2015 +0200

    manager: Don't double-free x11_display_name
    
    x11_display_name got freed twice here; once by g_variant_iter_loop
    and once by g_clear_pointer.
    
    Also break out of the loop early and use a non-copying format to
    avoid having to free anything.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=747310

 daemon/gdm-manager.c |    8 +++++---
 1 files changed, 5 insertions(+), 3 deletions(-)
---
diff --git a/daemon/gdm-manager.c b/daemon/gdm-manager.c
index fc357d3..64f11dd 100644
--- a/daemon/gdm-manager.c
+++ b/daemon/gdm-manager.c
@@ -1178,9 +1178,11 @@ gdm_manager_handle_register_display (GdmDBusManager        *manager,
         }
 
         g_variant_iter_init (&iter, details);
-        while (g_variant_iter_loop (&iter, "{ss}", &key, &value)) {
-                if (g_strcmp0 (key, "x11-display-name") == 0)
-                        x11_display_name = value;
+        while (g_variant_iter_loop (&iter, "{&s&s}", &key, &value)) {
+                if (g_strcmp0 (key, "x11-display-name") == 0) {
+                        x11_display_name = g_strdup (value);
+                        break;
+                }
         }
 
         session = get_user_session_for_display (self, display);


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