diff options
Diffstat (limited to 'source/smbd/password.c')
-rw-r--r-- | source/smbd/password.c | 42 |
1 files changed, 20 insertions, 22 deletions
diff --git a/source/smbd/password.c b/source/smbd/password.c index 87c1fef94c5..a5f597682f6 100644 --- a/source/smbd/password.c +++ b/source/smbd/password.c @@ -20,7 +20,6 @@ */ #include "includes.h" -#include "loadparm.h" extern int DEBUGLEVEL; extern int Protocol; @@ -43,7 +42,6 @@ Get the next challenge value - no repeats. ********************************************************************/ void generate_next_challenge(char *challenge) { - extern void E1(char *,char *,char *); static int counter = 0; struct timeval tval; int v1,v2; @@ -52,7 +50,7 @@ void generate_next_challenge(char *challenge) v2 = (counter++) * getpid() + tval.tv_usec; SIVAL(challenge,0,v1); SIVAL(challenge,4,v2); - E1(challenge,"SAMBA",saved_challenge); + E1(challenge,"SAMBA",(char *)saved_challenge); memcpy(challenge,saved_challenge,8); challenge_sent = True; } @@ -287,15 +285,13 @@ static void update_protected_database( char *user, BOOL result) #ifdef OSF1_ENH_SEC struct pr_passwd *mypasswd; time_t starttime; - long tz; mypasswd = getprpwnam (user); starttime = time (NULL); - tz = mktime ( localtime ( &starttime ) ); if (result) { - mypasswd->ufld.fd_slogin = tz; + mypasswd->ufld.fd_slogin = starttime; mypasswd->ufld.fd_nlogins = 0; putprpwnam(user,mypasswd); @@ -304,7 +300,7 @@ static void update_protected_database( char *user, BOOL result) } else { - mypasswd->ufld.fd_ulogin = tz; + mypasswd->ufld.fd_ulogin = starttime; mypasswd->ufld.fd_nlogins = mypasswd->ufld.fd_nlogins + 1; if ( mypasswd->ufld.fd_max_tries != 0 && mypasswd->ufld.fd_nlogins > mypasswd->ufld.fd_max_tries ) { @@ -684,7 +680,9 @@ BOOL password_ok(char *user,char *password, int pwlen, struct passwd *pwd, BOOL if(smb_pass->smb_nt_passwd != NULL) { DEBUG(4,("Checking NT MD4 password\n")); - if(smb_password_check(password, smb_pass->smb_nt_passwd, challenge)) + if(smb_password_check(password, + smb_pass->smb_nt_passwd, + (char *)challenge)) { update_protected_database(user,True); return(True); @@ -696,11 +694,12 @@ BOOL password_ok(char *user,char *password, int pwlen, struct passwd *pwd, BOOL /* Try against the lanman password */ - if(smb_password_check(password, smb_pass->smb_passwd, challenge)) - { - update_protected_database(user,True); - return(True); - } + if (smb_password_check(password, + smb_pass->smb_passwd, + (char *)challenge)) { + update_protected_database(user,True); + return(True); + } DEBUG(3,("Error smb_password_check failed\n")); } @@ -1153,13 +1152,12 @@ static BOOL check_user_equiv(char *user, char *remote, char *equiv_file) BOOL host_ok = False; #ifdef NETGROUP - /* THIS IS UNTESTED!! */ if (is_group) { static char *mydomain = NULL; if (!mydomain) yp_get_default_domain(&mydomain); - if (mydomain && innetgr(remote,file_host,user,mydomain)) + if (mydomain && innetgr(file_host,remote,user,mydomain)) host_ok = True; } #else @@ -1242,7 +1240,7 @@ BOOL check_hosts_equiv(char *user) } -static int password_client = -1; +int password_client = -1; static fstring pserver; /**************************************************************************** @@ -1257,8 +1255,7 @@ BOOL server_cryptkey(char *buf) int len; fstring desthost; struct in_addr dest_ip; - extern struct in_addr myip; - int port = 139; + int port = SMB_PORT; BOOL ret; if (password_client >= 0) @@ -1285,7 +1282,7 @@ BOOL server_cryptkey(char *buf) continue; } - if (memcmp(&dest_ip,&myip,sizeof(dest_ip)) == 0) { + if (ismyip(dest_ip)) { DEBUG(1,("Password server loop - disabling password server %s\n",p)); continue; } @@ -1321,9 +1318,10 @@ BOOL server_cryptkey(char *buf) CVAL(outbuf,0) = 0x81; send_smb(password_client,outbuf); - receive_smb(password_client,inbuf,5000); + - if (CVAL(inbuf,0) != 0x82) { + if (!receive_smb(password_client,inbuf,5000) || + CVAL(inbuf,0) != 0x82) { DEBUG(1,("%s rejected the session\n",pserver)); close(password_client); password_client = -1; return(False); @@ -1406,7 +1404,7 @@ BOOL server_validate(char *buf) DEBUG(3,("password server %s accepted the password\n",pserver)); -#ifndef KEEP_PASSWORD_SERVER_OPEN +#if !KEEP_PASSWORD_SERVER_OPEN close(password_client); password_client= -1; #endif |