entrance: fix previous segv :)
This commit is contained in:
parent
9b3911a4fb
commit
ccdf5ab8f5
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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");
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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();
|
||||
|
|
Loading…
Reference in New Issue