entrance: fix previous segv :)

This commit is contained in:
Michael Bouchaud 2014-01-08 23:49:40 +01:00
parent 9b3911a4fb
commit ccdf5ab8f5
5 changed files with 27 additions and 23 deletions

View File

@ -130,11 +130,12 @@ entrance_pam_open_session(void)
}
void
entrance_pam_close_session(void)
entrance_pam_close_session(const Eina_Bool opened)
{
PT("PAM close session\n");
last_result = pam_close_session(_pam_handle, PAM_SILENT);
switch (last_result) {
switch (last_result)
{
default:
//case PAM_SESSION_ERROR:
PT("error on close session");
@ -142,19 +143,22 @@ entrance_pam_close_session(void)
entrance_pam_end();
case PAM_SUCCESS:
break;
};
last_result = pam_setcred(_pam_handle, PAM_DELETE_CRED);
switch(last_result) {
default:
case PAM_CRED_ERR:
case PAM_CRED_UNAVAIL:
case PAM_CRED_EXPIRED:
case PAM_USER_UNKNOWN:
entrance_pam_end();
case PAM_SUCCESS:
break;
};
return;
}
if (opened)
{
last_result = pam_setcred(_pam_handle, PAM_DELETE_CRED);
switch(last_result)
{
default:
case PAM_CRED_ERR:
case PAM_CRED_UNAVAIL:
case PAM_CRED_EXPIRED:
case PAM_USER_UNKNOWN:
entrance_pam_end();
case PAM_SUCCESS:
break;
}
}
}
int

View File

@ -20,7 +20,7 @@ char **entrance_pam_env_list_get(void);
int entrance_pam_init(const char *service, const char *display, const char *user);
void entrance_pam_shutdown(void);
int entrance_pam_open_session(void);
void entrance_pam_close_session(void);
void entrance_pam_close_session(Eina_Bool opened);
int entrance_pam_authenticate(void);
int entrance_pam_auth_set(const char *login, const char *passwd);
int entrance_pam_end(void);

View File

@ -89,12 +89,12 @@ _entrance_server_read_cb(const void *data, size_t size EINA_UNUSED, void *user_d
PT("opening session now ...\n");
entrance_session_login(eev->event.auth.session, EINA_TRUE);
}
// else
// entrance_session_close();
else
entrance_session_close(EINA_FALSE);
}
else
{
entrance_session_close();
entrance_session_close(EINA_FALSE);
neev.event.status.login = NULL;
neev.event.status.granted = EINA_FALSE;
PT("server authenticate error\n");

View File

@ -201,14 +201,14 @@ entrance_session_end(const char *user)
"%s %s ", entrance_config->command.session_stop, user);
if (-1 == system(buf))
PT("Error on session stop command\n");
entrance_session_close();
entrance_session_close(EINA_TRUE);
}
void
entrance_session_close(void)
entrance_session_close(const Eina_Bool opened)
{
#ifdef HAVE_PAM
entrance_pam_close_session();
entrance_pam_close_session(opened);
entrance_pam_end();
entrance_pam_shutdown();
#endif

View File

@ -6,7 +6,7 @@ void entrance_session_init(const char *dname);
void entrance_session_end(const char *login);
void entrance_session_shutdown();
Eina_Bool entrance_session_authenticate(const char *login, const char *pwd);
void entrance_session_close(void);
void entrance_session_close(Eina_Bool opened);
Eina_Bool entrance_session_login(const char *command, Eina_Bool push);
void entrance_session_pid_set(pid_t pid);
pid_t entrance_session_pid_get();