From c3ff1bcebbe08abbd64067209e388a91dbc402c3 Mon Sep 17 00:00:00 2001 From: jsorg71 Date: Sun, 14 Aug 2005 02:22:11 +0000 Subject: changed pam session and env --- sesman/verify_user_pam.c | 47 ++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 46 insertions(+), 1 deletion(-) (limited to 'sesman/verify_user_pam.c') diff --git a/sesman/verify_user_pam.c b/sesman/verify_user_pam.c index e58576fe..40af68af 100644 --- a/sesman/verify_user_pam.c +++ b/sesman/verify_user_pam.c @@ -133,12 +133,20 @@ auth_userpass(char* user, char* pass) /******************************************************************************/ /* returns error */ int DEFAULT_CC -auth_start_session(long in_val) +auth_start_session(long in_val, int in_display) { struct t_auth_info* auth_info; int error; + char display[256]; + g_sprintf(display, ":%d", in_display); auth_info = (struct t_auth_info*)in_val; + error = pam_set_item(auth_info->ph, PAM_TTY, display); + if (error != PAM_SUCCESS) + { + g_printf("pam_set_item failed: %s\n\r", pam_strerror(auth_info->ph, error)); + return 1; + } error = pam_setcred(auth_info->ph, PAM_ESTABLISH_CRED); if (error != PAM_SUCCESS) { @@ -185,3 +193,40 @@ auth_end(long in_val) g_free(auth_info); return 0; } + +/******************************************************************************/ +/* returns error */ +/* set any pam env vars */ +int DEFAULT_CC +auth_set_env(long in_val) +{ + struct t_auth_info* auth_info; + char** pam_envlist; + char** pam_env; + char item[256]; + char value[256]; + int eq_pos; + + auth_info = (struct t_auth_info*)in_val; + if (auth_info != 0) + { + /* export PAM environment */ + pam_envlist = pam_getenvlist(auth_info->ph); + if (pam_envlist != NULL) + { + for (pam_env = pam_envlist; *pam_env != NULL; ++pam_env) + { + eq_pos = g_pos(*pam_env, "="); + if (eq_pos >= 0 && eq_pos < 250) + { + g_strncpy(item, *pam_env, eq_pos); + g_strncpy(value, (*pam_env) + eq_pos + 1, 255); + g_setenv(item, value, 1); + } + g_free(*pam_env); + } + g_free(pam_envlist); + } + } + return 0; +} -- cgit v1.2.3