diff --git a/daemon/gdm-server.c b/daemon/gdm-server.c index e9ed14ca11d51fae53943db6df4abf1d57948135..cca44c58b5287fc8af0c4874b972fd49c721d004 100644 --- a/daemon/gdm-server.c +++ b/daemon/gdm-server.c @@ -275,7 +275,8 @@ gdm_server_resolve_command_line (GdmServer *server, gdm_server_init_command (server); - g_shell_parse_argv (server->command, &argc, &argv, NULL); + if (!g_shell_parse_argv (server->command, &argc, &argv, NULL)) + return FALSE; for (len = 0; argv != NULL && argv[len] != NULL; len++) { char *arg = argv[len]; @@ -670,10 +671,13 @@ gdm_server_spawn (GdmServer *server, /* Figure out the server command */ argv = NULL; argc = 0; - gdm_server_resolve_command_line (server, - vtarg, - &argc, - &argv); + + if (!gdm_server_resolve_command_line (server, + vtarg, + &argc, + &argv)) { + return FALSE; + } if (server->session_args) { server_add_xserver_args (server, &argc, &argv); diff --git a/libgdm/gdm-sessions.c b/libgdm/gdm-sessions.c index b0258d84d4b9a7eeaaaebba621e6db096dbbabc1..0aedcf90604cd3af02c03ff7929fe808ce15ab5a 100644 --- a/libgdm/gdm-sessions.c +++ b/libgdm/gdm-sessions.c @@ -79,6 +79,9 @@ get_systemd_session (void) else ret = sd_pid_get_session (pid, &session_id); + if (ret < 0) + return NULL; + return g_steal_pointer (&session_id); }