summaryrefslogtreecommitdiffstats
path: root/source/nsswitch
diff options
context:
space:
mode:
authorGünther Deschner <gd@samba.org>2006-08-01 15:31:16 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 11:38:28 -0500
commitb3ac5a586ba37b1122b0dc941dfee648fc4fa6d5 (patch)
treee7bcbf9bdb844290445a7c7ba4197c0a78522877 /source/nsswitch
parent62a8e0b08919e71c6a575ce6d89d8a4a09acbd87 (diff)
downloadsamba-b3ac5a586ba37b1122b0dc941dfee648fc4fa6d5.tar.gz
samba-b3ac5a586ba37b1122b0dc941dfee648fc4fa6d5.tar.xz
samba-b3ac5a586ba37b1122b0dc941dfee648fc4fa6d5.zip
r17366: Save the logon script path from the info3 in the PAM session allowing
other PAM modules to pick it up from there. Guenther
Diffstat (limited to 'source/nsswitch')
-rw-r--r--source/nsswitch/pam_winbind.c22
-rw-r--r--source/nsswitch/pam_winbind.h1
2 files changed, 19 insertions, 4 deletions
diff --git a/source/nsswitch/pam_winbind.c b/source/nsswitch/pam_winbind.c
index f96dd0ee9b6..1aef5c6c4a2 100644
--- a/source/nsswitch/pam_winbind.c
+++ b/source/nsswitch/pam_winbind.c
@@ -503,13 +503,27 @@ static int winbind_auth_request(pam_handle_t * pamh,
/* save the CIFS homedir for pam_cifs / pam_mount */
if (response.data.auth.info3.home_dir[0] != '\0') {
- char *buf;
- if (!asprintf(&buf, "%s", response.data.auth.info3.home_dir)) {
- return PAM_BUF_ERR;
+ int ret2 = pam_set_data(pamh, PAM_WINBIND_HOMEDIR,
+ (void *) strdup(response.data.auth.info3.home_dir),
+ _pam_winbind_cleanup_func);
+ if (ret2) {
+ _pam_log_debug(ctrl, LOG_DEBUG, "Could not set data: %s",
+ pam_strerror(pamh, ret2));
}
- pam_set_data( pamh, PAM_WINBIND_HOMEDIR, (void *)buf, _pam_winbind_cleanup_func);
+ }
+
+ /* save the logon script path for other PAM modules */
+ if (response.data.auth.info3.logon_script[0] != '\0') {
+
+ int ret2 = pam_set_data(pamh, PAM_WINBIND_LOGONSCRIPT,
+ (void *) strdup(response.data.auth.info3.logon_script),
+ _pam_winbind_cleanup_func);
+ if (ret2) {
+ _pam_log_debug(ctrl, LOG_DEBUG, "Could not set data: %s",
+ pam_strerror(pamh, ret2));
+ }
}
return ret;
diff --git a/source/nsswitch/pam_winbind.h b/source/nsswitch/pam_winbind.h
index fb2769d1c1a..2b7080182be 100644
--- a/source/nsswitch/pam_winbind.h
+++ b/source/nsswitch/pam_winbind.h
@@ -108,6 +108,7 @@ do { \
#define PAM_WINBIND_NEW_AUTHTOK_REQD "PAM_WINBIND_NEW_AUTHTOK_REQD"
#define PAM_WINBIND_HOMEDIR "PAM_WINBIND_HOMEDIR"
+#define PAM_WINBIND_LOGONSCRIPT "PAM_WINBIND_LOGONSCRIPT"
#define PAM_WINBIND_PWD_LAST_SET "PAM_WINBIND_PWD_LAST_SET"
#define SECONDS_PER_DAY 86400