entrance: formating

This commit is contained in:
Michael Bouchaud 2014-01-08 23:41:12 +01:00
parent af02c01ca7
commit 9b3911a4fb
2 changed files with 63 additions and 52 deletions

View File

@ -35,49 +35,53 @@ static char *_passwd = NULL;
static int static int
_entrance_pam_conv(int num_msg, const struct pam_message **msg, _entrance_pam_conv(int num_msg, const struct pam_message **msg,
struct pam_response **resp, void *appdata_ptr EINA_UNUSED) { struct pam_response **resp, void *appdata_ptr EINA_UNUSED)
int i, result = PAM_SUCCESS; {
*resp = (struct pam_response *) calloc(num_msg, sizeof(struct pam_response)); int i, result = PAM_SUCCESS;
for (i = 0; i < num_msg; ++i){ *resp = (struct pam_response *) calloc(num_msg, sizeof(struct pam_response));
resp[i]->resp=0; for (i = 0; i < num_msg; ++i)
resp[i]->resp_retcode=0; {
switch(msg[i]->msg_style){ resp[i]->resp=0;
case PAM_PROMPT_ECHO_ON: resp[i]->resp_retcode=0;
// We assume PAM is asking for the username switch(msg[i]->msg_style)
PT("echo on\n"); {
resp[i]->resp = _login; case PAM_PROMPT_ECHO_ON:
break; // We assume PAM is asking for the username
PT("echo on\n");
resp[i]->resp = _login;
break;
case PAM_PROMPT_ECHO_OFF: case PAM_PROMPT_ECHO_OFF:
PT("echo off\n"); PT("echo off\n");
resp[i]->resp = _passwd; resp[i]->resp = _passwd;
_passwd = NULL; _passwd = NULL;
break; break;
case PAM_ERROR_MSG: case PAM_ERROR_MSG:
PT("error msg\n"); PT("error msg\n");
case PAM_TEXT_INFO: case PAM_TEXT_INFO:
PT("info "); PT("info ");
fprintf(stderr, "%s\n", msg[i]->msg); fprintf(stderr, "%s\n", msg[i]->msg);
break; break;
case PAM_SUCCESS: case PAM_SUCCESS:
PT("success :)\n"); PT("success :)\n");
break; break;
default: default:
PT("default\n"); PT("default\n");
}
} if (result != PAM_SUCCESS) break;
if (result != PAM_SUCCESS) break;
} }
if (result != PAM_SUCCESS) { if (result != PAM_SUCCESS)
for (i = 0; i < num_msg; ++i){ {
for (i = 0; i < num_msg; ++i)
{
if (resp[i]->resp==0) continue; if (resp[i]->resp==0) continue;
free(resp[i]->resp); free(resp[i]->resp);
resp[i]->resp=0; resp[i]->resp=0;
}; }
free(*resp); free(*resp);
*resp=0; *resp=0;
} }
return result; return result;
} }
static char * static char *
@ -93,7 +97,7 @@ _get_running_username(void)
int int
entrance_pam_open_session() entrance_pam_open_session(void)
{ {
last_result = pam_setcred(_pam_handle, PAM_ESTABLISH_CRED); last_result = pam_setcred(_pam_handle, PAM_ESTABLISH_CRED);
switch (last_result) switch (last_result)
@ -126,12 +130,14 @@ entrance_pam_open_session()
} }
void void
entrance_pam_close_session() { entrance_pam_close_session(void)
{
PT("PAM close session\n"); PT("PAM close session\n");
last_result = pam_close_session(_pam_handle, PAM_SILENT); last_result = pam_close_session(_pam_handle, PAM_SILENT);
switch (last_result) { switch (last_result) {
default: default:
//case PAM_SESSION_ERROR: //case PAM_SESSION_ERROR:
PT("error on close session");
pam_setcred(_pam_handle, PAM_DELETE_CRED); pam_setcred(_pam_handle, PAM_DELETE_CRED);
entrance_pam_end(); entrance_pam_end();
case PAM_SUCCESS: case PAM_SUCCESS:
@ -152,7 +158,8 @@ entrance_pam_close_session() {
} }
int int
entrance_pam_end() { entrance_pam_end(void)
{
int result; int result;
result = pam_end(_pam_handle, last_result); result = pam_end(_pam_handle, last_result);
_pam_handle = NULL; _pam_handle = NULL;
@ -160,7 +167,7 @@ entrance_pam_end() {
} }
int int
entrance_pam_authenticate() entrance_pam_authenticate(void)
{ {
last_result = pam_authenticate(_pam_handle, 0); last_result = pam_authenticate(_pam_handle, 0);
switch (last_result) switch (last_result)
@ -216,7 +223,8 @@ entrance_pam_authenticate()
} }
int int
entrance_pam_init(const char *service, const char *display, const char *user) { entrance_pam_init(const char *service, const char *display, const char *user)
{
int status; int status;
if (!service && !*service) goto pam_error; if (!service && !*service) goto pam_error;
@ -255,7 +263,8 @@ entrance_pam_item_set(ENTRANCE_PAM_ITEM_TYPE type, const void *value)
} }
const void * const void *
entrance_pam_item_get(ENTRANCE_PAM_ITEM_TYPE type) { entrance_pam_item_get(ENTRANCE_PAM_ITEM_TYPE type)
{
const void *data; const void *data;
last_result = pam_get_item(_pam_handle, type, &data); last_result = pam_get_item(_pam_handle, type, &data);
switch (last_result) { switch (last_result) {
@ -271,12 +280,14 @@ entrance_pam_item_get(ENTRANCE_PAM_ITEM_TYPE type) {
} }
int int
entrance_pam_env_set(const char *env, const char *value) { entrance_pam_env_set(const char *env, const char *value)
{
char buf[1024]; char buf[1024];
if (!env || !value) return 1; if (!env || !value) return 1;
snprintf(buf, sizeof(buf), "%s=%s", env, value); snprintf(buf, sizeof(buf), "%s=%s", env, value);
last_result = pam_putenv(_pam_handle, buf); last_result = pam_putenv(_pam_handle, buf);
switch (last_result) { switch (last_result)
{
default: default:
case PAM_PERM_DENIED: case PAM_PERM_DENIED:
case PAM_ABORT: case PAM_ABORT:
@ -285,7 +296,7 @@ entrance_pam_env_set(const char *env, const char *value) {
return 1; return 1;
case PAM_SUCCESS: case PAM_SUCCESS:
break; break;
}; }
return 0; return 0;
} }

View File

@ -16,13 +16,13 @@ typedef enum ENTRANCE_PAM_ITEM_TYPE_ {
int entrance_pam_item_set(ENTRANCE_PAM_ITEM_TYPE type, const void *value); int entrance_pam_item_set(ENTRANCE_PAM_ITEM_TYPE type, const void *value);
const void *entrance_pam_item_get(ENTRANCE_PAM_ITEM_TYPE); const void *entrance_pam_item_get(ENTRANCE_PAM_ITEM_TYPE);
int entrance_pam_env_set(const char *env, const char *value); int entrance_pam_env_set(const char *env, const char *value);
char **entrance_pam_env_list_get(); char **entrance_pam_env_list_get(void);
int entrance_pam_init(const char *service, const char *display, const char *user); int entrance_pam_init(const char *service, const char *display, const char *user);
void entrance_pam_shutdown(); void entrance_pam_shutdown(void);
int entrance_pam_open_session(); int entrance_pam_open_session(void);
void entrance_pam_close_session(); void entrance_pam_close_session(void);
int entrance_pam_authenticate(); int entrance_pam_authenticate(void);
int entrance_pam_auth_set(const char *login, const char *passwd); int entrance_pam_auth_set(const char *login, const char *passwd);
int entrance_pam_end(); int entrance_pam_end(void);
#endif /* ENTRANCE_PAM_H_ */ #endif /* ENTRANCE_PAM_H_ */