diff --git a/sesman/session.c b/sesman/session.c index 441f8d3a60..d352f5e859 100644 --- a/sesman/session.c +++ b/sesman/session.c @@ -526,7 +526,12 @@ session_start_fork(tbus data, tui8 type, struct SCP_SESSION *s) g_delete_wait_obj(g_sigchld_event); g_delete_wait_obj(g_term_event); - auth_start_session(data, display); + if (auth_start_session(data, display) != 0) + { + // Errors are logged by the auth module, as they are + // specific to that module + g_exit(1); + } sesman_close_all(); g_sprintf(geometry, "%dx%d", s->width, s->height); g_sprintf(depth, "%d", s->bpp); diff --git a/sesman/verify_user_pam.c b/sesman/verify_user_pam.c index a34d83cd7d..ed17397fc3 100644 --- a/sesman/verify_user_pam.c +++ b/sesman/verify_user_pam.c @@ -316,8 +316,8 @@ auth_userpass(const char *user, const char *pass, int *errorcode) /******************************************************************************/ /* returns error */ -int -auth_start_session(long in_val, int in_display) +static int +auth_start_session_private(long in_val, int in_display) { struct t_auth_info *auth_info; int error; @@ -357,6 +357,26 @@ auth_start_session(long in_val, int in_display) return 0; } +/******************************************************************************/ +/** + * Main routine to start a session + * + * Calls the private routine and logs an additional error if the private + * routine fails + */ +int +auth_start_session(long in_val, int in_display) +{ + int result = auth_start_session_private(in_val, in_display); + if (result != 0) + { + LOG(LOG_LEVEL_ERROR, + "Can't start PAM session. See PAM logging for more info"); + } + + return result; +} + /******************************************************************************/ /* returns error */ int