]> rtime.felk.cvut.cz Git - sojka/lightdm.git/commitdiff
Don't leak X cookies
authorRobert Ancell <robert.ancell@canonical.com>
Thu, 6 Mar 2014 02:08:23 +0000 (15:08 +1300)
committerRobert Ancell <robert.ancell@canonical.com>
Thu, 6 Mar 2014 02:08:23 +0000 (15:08 +1300)
src/x-server-local.c

index 3be4cc20eb567a306313e191fe3d4e6327196f49..9d5b2d156efaf8b0294d0a3b19869a9ad6902aac 100644 (file)
@@ -146,15 +146,20 @@ x_server_local_release_display_number (guint display_number)
 XServerLocal *
 x_server_local_new (void)
 {
-    XServerLocal *self = g_object_new (X_SERVER_LOCAL_TYPE, NULL);
+    XServerLocal *self;
     gchar hostname[1024], *number, *name;
+    XAuthority *cookie;
+
+    self = g_object_new (X_SERVER_LOCAL_TYPE, NULL);
 
     x_server_set_display_number (X_SERVER (self), x_server_local_get_unused_display_number ());
 
     gethostname (hostname, 1024);
     number = g_strdup_printf ("%d", x_server_get_display_number (X_SERVER (self)));
-    x_server_set_authority (X_SERVER (self), x_authority_new_cookie (XAUTH_FAMILY_LOCAL, (guint8*) hostname, strlen (hostname), number));
+    cookie = x_authority_new_cookie (XAUTH_FAMILY_LOCAL, (guint8*) hostname, strlen (hostname), number);
+    x_server_set_authority (X_SERVER (self), cookie);
     g_free (number);
+    g_object_unref (cookie);
 
     name = g_strdup_printf ("x-%d", x_server_get_display_number (X_SERVER (self)));
     display_server_set_name (DISPLAY_SERVER (self), name);