summaryrefslogtreecommitdiff
path: root/daemon/server.c
diff options
context:
space:
mode:
Diffstat (limited to 'daemon/server.c')
-rw-r--r--daemon/server.c19
1 files changed, 14 insertions, 5 deletions
diff --git a/daemon/server.c b/daemon/server.c
index ad0becb9..ed69f90e 100644
--- a/daemon/server.c
+++ b/daemon/server.c
@@ -988,6 +988,12 @@ gdm_server_resolve_command_line (GdmDisplay *disp,
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 @@ gdm_server_spawn (GdmDisplay *d, const char *vtarg)
int logfd;
char *command;
pid_t pid;
+ gboolean rc;
if (d == NULL ||
ve_string_empty (d->command)) {
@@ -1124,11 +1131,13 @@ gdm_server_spawn (GdmDisplay *d, const char *vtarg)
/* 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) {