[gdm] manager: Don't double-free x11_display_name
- From: Ray Strode <halfline src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gdm] manager: Don't double-free x11_display_name
- Date: Thu, 16 Apr 2015 13:54:52 +0000 (UTC)
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]