Dear sirs,

The attached patch (fixing the double free in gdm-xdmcp-manager.c) fixes 
the crash for me.

Cheers, Chris.
-- 
Aptivate | http://www.aptivate.org | Phone: +44 1223 760887
The Humanitarian Centre, Fenner's, Gresham Road, Cambridge CB1 2ES

Aptivate is a not-for-profit company registered in England and Wales
with company number 04980791.
diff -ru gdm-2.20.7/daemon/gdm-xdmcp-manager.c gdm-2.20.7-chris/daemon/gdm-xdmcp-manager.c
--- gdm-2.20.7/daemon/gdm-xdmcp-manager.c	2008-06-30 18:53:13.000000000 +0100
+++ gdm-2.20.7-chris/daemon/gdm-xdmcp-manager.c	2009-02-05 12:55:04.000000000 +0000
@@ -401,12 +401,12 @@
 
 	sock = socket (ai->ai_family, ai->ai_socktype, ai->ai_protocol);
 	if (sock < 0) {
-		gdm_debug ("socket: %s", g_strerror (errno));
+		gdm_error ("socket: %s", g_strerror (errno));
 		return sock;
 	}
 
 	if (bind (sock, ai->ai_addr, ai->ai_addrlen) < 0) {
-		gdm_debug ("bind: %s", g_strerror (errno));
+		gdm_error ("bind: %s", g_strerror (errno));
 		close (sock);
 		return -1;
 	}
@@ -728,7 +728,6 @@
 
 		s = get_willing_output (manager);
 		if (s != NULL) {
-			g_free (last_status);
 			last_status = s;
 		} else {
 			last_status = g_strdup (manager->priv->sysid);
--- gdm-2.20.7/daemon/server.c	2008-06-30 18:53:13.000000000 +0100
+++ gdm-2.20.7-chris/daemon/server.c	2009-02-05 11:55:05.000000000 +0000
@@ -1053,9 +1053,14 @@
 
 			str = ve_sure_string (svr->command);
 			svr_command = NULL;
-			g_shell_parse_argv (str, &svr_argc, &svr_command, NULL);
 
-			g_shell_parse_argv (disp->command, &argc, &argv, NULL);
+			GError* error_p;
+
+			g_assert(g_shell_parse_argv (str, &svr_argc,
+				&svr_command, &error_p));
+
+			g_assert(g_shell_parse_argv (disp->command, &argc,
+				&argv, &error_p));
 
 			if (argv[0] == NULL || argv[1] == NULL) {
 				g_strfreev (argv);

Reply via email to