diff options
-rw-r--r-- | daemon/gdm-session-worker.c | 34 |
1 files changed, 18 insertions, 16 deletions
diff --git a/daemon/gdm-session-worker.c b/daemon/gdm-session-worker.c index daf8b91d..d97b02b5 100644 --- a/daemon/gdm-session-worker.c +++ b/daemon/gdm-session-worker.c @@ -1856,6 +1856,24 @@ gdm_session_worker_start_session (GdmSessionWorker *worker, jump_to_vt (worker, worker->priv->session_vt); } + if (!worker->priv->is_program_session && !run_script (worker, GDMCONFDIR "/PostLogin")) { + g_set_error (error, + GDM_SESSION_WORKER_ERROR, + GDM_SESSION_WORKER_ERROR_OPENING_SESSION, + "Failed to execute PostLogin script"); + error_code = PAM_ABORT; + goto out; + } + + if (!worker->priv->is_program_session && !run_script (worker, GDMCONFDIR "/PreSession")) { + g_set_error (error, + GDM_SESSION_WORKER_ERROR, + GDM_SESSION_WORKER_ERROR_OPENING_SESSION, + "Failed to execute PreSession script"); + error_code = PAM_ABORT; + goto out; + } + session_pid = fork (); if (session_pid < 0) { @@ -2251,14 +2269,6 @@ gdm_session_worker_open_session (GdmSessionWorker *worker, flags |= PAM_SILENT; } - if (!run_script (worker, GDMCONFDIR "/PostLogin")) { - g_set_error (error, - GDM_SESSION_WORKER_ERROR, - GDM_SESSION_WORKER_ERROR_OPENING_SESSION, - "Failed to execute PostLogin script"); - return FALSE; - } - error_code = pam_open_session (worker->priv->pam_handle, flags); if (error_code != PAM_SUCCESS) { @@ -2274,14 +2284,6 @@ gdm_session_worker_open_session (GdmSessionWorker *worker, session_id = gdm_session_worker_get_environment_variable (worker, "XDG_SESSION_ID"); - /* FIXME: should we do something here? - * Note that error return status from PreSession script should - * be ignored in the case of a X-GDM-BypassXsession session, which can - * be checked by calling: - * gdm_session_bypasses_xsession (session) - */ - run_script (worker, GDMCONFDIR "/PreSession"); - if (session_id != NULL) { g_free (worker->priv->session_id); worker->priv->session_id = session_id; |