gdm r6734 - in branches/gnome-2-20: . daemon



Author: bcameron
Date: Thu Feb 26 20:05:01 2009
New Revision: 6734
URL: http://svn.gnome.org/viewvc/gdm?rev=6734&view=rev

Log:
2009-02-26 Brian Cameron <brian cameron sun com>

        * daemon/gdm.c, daemon/server.c:  Provide better error reporting when
          GDM is unable to parse the command.  Another partial fix for bug
          #530585.


Modified:
   branches/gnome-2-20/ChangeLog
   branches/gnome-2-20/daemon/gdm.c
   branches/gnome-2-20/daemon/server.c

Modified: branches/gnome-2-20/daemon/gdm.c
==============================================================================
--- branches/gnome-2-20/daemon/gdm.c	(original)
+++ branches/gnome-2-20/daemon/gdm.c	Thu Feb 26 20:05:01 2009
@@ -1874,16 +1874,24 @@
 	}
 
 	if (SERVER_IS_LOCAL (d)) {
-		char **argv;
-		char *command;
-		int argc;
+		char    **argv;
+		char     *command;
+		int       argc;
+		gboolean  rc;
+
 		argc = 0;
 		argv = NULL;
-		gdm_server_resolve_command_line (d,
-						 FALSE, /* resolve_flags */
-						 NULL, /* vtarg */
-						 &argc,
-						 &argv);
+		rc   = gdm_server_resolve_command_line (d,
+						        FALSE, /* resolve_flags */
+						        NULL, /* vtarg */
+						        &argc,
+						        &argv);
+
+		if (rc == FALSE) {
+			g_free (file);
+			return;
+		}
+
 		command = g_strjoinv (" ", argv);
 		g_strfreev (argv);
 		VE_IGNORE_EINTR (fprintf (fp, "%s local %s\n", d->name, command));

Modified: branches/gnome-2-20/daemon/server.c
==============================================================================
--- branches/gnome-2-20/daemon/server.c	(original)
+++ branches/gnome-2-20/daemon/server.c	Thu Feb 26 20:05:01 2009
@@ -988,6 +988,12 @@
 			g_shell_parse_argv (disp->command, &argc,
 				&argv, &error_p);
 
+			if (argv == NULL) {
+				gdm_debug ("Problem parsing server command <%s>",
+					disp->command ? disp->command : "(null)");
+				return FALSE;
+			}
+
 			if (argv[0] == NULL || argv[1] == NULL) {
 				g_strfreev (argv);
 				argv = svr_command;
@@ -1102,6 +1108,7 @@
     int logfd;
     char *command;
     pid_t pid;
+    gboolean rc;
 
     if (d == NULL ||
 	ve_string_empty (d->command)) {
@@ -1124,11 +1131,13 @@
     /* Figure out the server command */
     argv = NULL;
     argc = 0;
-    gdm_server_resolve_command_line (d,
-				     TRUE /* resolve flags */,
-				     vtarg,
-				     &argc,
-				     &argv);
+    rc = gdm_server_resolve_command_line (d,
+				         TRUE /* resolve flags */,
+				         vtarg,
+				         &argc,
+				         &argv);
+    if (rc == FALSE)
+       return;
 
     /* Do not support additional session arguments with Xnest. */
     if (d->type != TYPE_FLEXI_XNEST) {



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