From e277c08631316ccda875a09a67ebb220c495c5a9 Mon Sep 17 00:00:00 2001 From: Jeremy Allison Date: Sun, 22 Apr 2001 07:20:24 +0000 Subject: Commit of a modified version of Andrew Bartlett's patch that removes the horrid utmp hostname parameter - now uses the client name instead. Also tidies up some of the unencrypted password checking when PAM is compiled in. FIXME ! An pam_accountcheck() is being called even when smb encrypted passwords are negotiated. Is this the correct thing to do when winbindd is running ! This needs *SEVERE* testing.... Jeremy. (This used to be commit 071c799f479dd25efdb9c41745fc8f2beea7b568) --- source3/smbd/session.c | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) (limited to 'source3/smbd/session.c') diff --git a/source3/smbd/session.c b/source3/smbd/session.c index 4ede1d9a68..fb13019812 100644 --- a/source3/smbd/session.c +++ b/source3/smbd/session.c @@ -51,6 +51,7 @@ BOOL session_claim(uint16 vuid) uint32 pid = (uint32)sys_getpid(); TDB_DATA key; fstring keystr; + char * hostname; vuser->session_id = 0; @@ -88,15 +89,12 @@ BOOL session_claim(uint16 vuid) return False; } + hostname = client_name(); + if (strequal(hostname,"UNKNOWN")) + hostname = client_addr(); + fstrcpy(sessionid.username, vuser->user.unix_name); -#if WITH_UTMP - fstrcpy(sessionid.hostname, lp_utmp_hostname()); -#else - { - extern fstring remote_machine; - fstrcpy(sessionid.hostname, remote_machine); - } -#endif + fstrcpy(sessionid.hostname, hostname); slprintf(sessionid.id_str, sizeof(sessionid.id_str)-1, SESSION_TEMPLATE, i); sessionid.id_num = i; sessionid.pid = pid; @@ -113,7 +111,7 @@ BOOL session_claim(uint16 vuid) } #if WITH_PAM - if (!pam_session(True, sessionid.username, sessionid.id_str)) { + if (!pam_session(True, sessionid.username, sessionid.id_str, sessionid.hostname)) { DEBUG(1,("pam_session rejected the session for %s [%s]\n", sessionid.username, sessionid.id_str)); tdb_delete(tdb, key); @@ -169,7 +167,7 @@ void session_yield(uint16 vuid) #endif #if WITH_PAM - pam_session(False, sessionid.username, sessionid.id_str); + pam_session(False, sessionid.username, sessionid.id_str, sessionid.hostname); #endif tdb_delete(tdb, key); -- cgit