forked from enlightenment/enlightenment
parent
0d4723e3b7
commit
609a510a21
|
@ -583,19 +583,29 @@ _desklock_auth(const char *passwd)
|
||||||
/* child */
|
/* child */
|
||||||
int pamerr;
|
int pamerr;
|
||||||
E_Desklock_Auth da;
|
E_Desklock_Auth da;
|
||||||
|
char *current_user;
|
||||||
|
|
||||||
strncpy(da.user, _desklock_auth_get_current_user(), PATH_MAX);
|
strncpy(da.user, current_user, PATH_MAX);
|
||||||
strncpy(da.passwd, passwd, PATH_MAX);
|
strncpy(da.passwd, passwd, PATH_MAX);
|
||||||
da.pam.handle = NULL;
|
da.pam.handle = NULL;
|
||||||
da.pam.conv.conv = NULL;
|
da.pam.conv.conv = NULL;
|
||||||
da.pam.conv.appdata_ptr = NULL;
|
da.pam.conv.appdata_ptr = NULL;
|
||||||
|
|
||||||
pamerr = _desklock_pam_init(&da);
|
pamerr = _desklock_pam_init(&da);
|
||||||
if (pamerr != PAM_SUCCESS) exit(pamerr);
|
if (pamerr != PAM_SUCCESS)
|
||||||
|
{
|
||||||
|
free(current_user);
|
||||||
|
exit(pamerr);
|
||||||
|
}
|
||||||
pamerr = pam_authenticate(da.pam.handle, 0);
|
pamerr = pam_authenticate(da.pam.handle, 0);
|
||||||
pam_end(da.pam.handle, pamerr);
|
pam_end(da.pam.handle, pamerr);
|
||||||
memset(da.passwd, 0, sizeof(da.passwd));
|
memset(da.passwd, 0, sizeof(da.passwd));
|
||||||
if (pamerr == PAM_SUCCESS) exit(0);
|
if (pamerr == PAM_SUCCESS)
|
||||||
|
{
|
||||||
|
free(current_user);
|
||||||
|
exit(0);
|
||||||
|
}
|
||||||
|
free(current_user);
|
||||||
exit(-1);
|
exit(-1);
|
||||||
}
|
}
|
||||||
return 1;
|
return 1;
|
||||||
|
@ -616,6 +626,8 @@ static int
|
||||||
_desklock_pam_init(E_Desklock_Auth *da)
|
_desklock_pam_init(E_Desklock_Auth *da)
|
||||||
{
|
{
|
||||||
int pamerr;
|
int pamerr;
|
||||||
|
char *current_host;
|
||||||
|
char *current_user;
|
||||||
|
|
||||||
if (!da) return -1;
|
if (!da) return -1;
|
||||||
|
|
||||||
|
@ -627,14 +639,26 @@ _desklock_pam_init(E_Desklock_Auth *da)
|
||||||
&(da->pam.handle))) != PAM_SUCCESS)
|
&(da->pam.handle))) != PAM_SUCCESS)
|
||||||
return pamerr;
|
return pamerr;
|
||||||
|
|
||||||
|
current_user = _desklock_auth_get_current_user();
|
||||||
|
|
||||||
if ((pamerr = pam_set_item(da->pam.handle, PAM_USER,
|
if ((pamerr = pam_set_item(da->pam.handle, PAM_USER,
|
||||||
_desklock_auth_get_current_user())) != PAM_SUCCESS)
|
current_user)) != PAM_SUCCESS)
|
||||||
return pamerr;
|
{
|
||||||
|
free(current_user);
|
||||||
|
return pamerr;
|
||||||
|
}
|
||||||
|
|
||||||
|
current_host = _desklock_auth_get_current_host();
|
||||||
if ((pamerr = pam_set_item(da->pam.handle, PAM_RHOST,
|
if ((pamerr = pam_set_item(da->pam.handle, PAM_RHOST,
|
||||||
_desklock_auth_get_current_host())) != PAM_SUCCESS)
|
current_host)) != PAM_SUCCESS)
|
||||||
return pamerr;
|
{
|
||||||
|
free(current_user);
|
||||||
|
free(current_host);
|
||||||
|
return pamerr;
|
||||||
|
}
|
||||||
|
|
||||||
|
free(current_user);
|
||||||
|
free(current_host);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -155,10 +155,14 @@ e_ipc_codec_shutdown(void)
|
||||||
E_CONFIG_DD_FREE(_e_ipc_2str_int_list_edd);
|
E_CONFIG_DD_FREE(_e_ipc_2str_int_list_edd);
|
||||||
E_CONFIG_DD_FREE(_e_ipc_4int_2str_edd);
|
E_CONFIG_DD_FREE(_e_ipc_4int_2str_edd);
|
||||||
E_CONFIG_DD_FREE(_e_ipc_4int_2str_list_edd);
|
E_CONFIG_DD_FREE(_e_ipc_4int_2str_list_edd);
|
||||||
|
E_CONFIG_DD_FREE(_e_ipc_5int_2str_edd);
|
||||||
|
E_CONFIG_DD_FREE(_e_ipc_5int_2str_list_edd);
|
||||||
E_CONFIG_DD_FREE(_e_ipc_3int_4str_edd);
|
E_CONFIG_DD_FREE(_e_ipc_3int_4str_edd);
|
||||||
E_CONFIG_DD_FREE(_e_ipc_3int_4str_list_edd);
|
E_CONFIG_DD_FREE(_e_ipc_3int_4str_list_edd);
|
||||||
E_CONFIG_DD_FREE(_e_ipc_3int_3str_edd);
|
E_CONFIG_DD_FREE(_e_ipc_3int_3str_edd);
|
||||||
E_CONFIG_DD_FREE(_e_ipc_3int_3str_list_edd);
|
E_CONFIG_DD_FREE(_e_ipc_3int_3str_list_edd);
|
||||||
|
E_CONFIG_DD_FREE(_e_ipc_str_4int_edd);
|
||||||
|
E_CONFIG_DD_FREE(_e_ipc_str_4int_list_edd);
|
||||||
}
|
}
|
||||||
|
|
||||||
EAPI int
|
EAPI int
|
||||||
|
|
Loading…
Reference in New Issue