mirror of
https://github.com/samba-team/samba.git
synced 2025-01-04 05:18:06 +03:00
Fixed a domain functionality problem where NT clients would start
endlessly repeating a network SAMLOGON (hoping it to change, hmmm...).
( Guess what I found in pwdb_init_sam...
unix_to_nt_time(&user->logon_time, (time_t)-1);
unix_to_nt_time(&user->logoff_time, (time_t)-1);
unix_to_nt_time(&user->kickoff_time, (time_t)-1);
... )
(This used to be commit e9c79c85e6
)
This commit is contained in:
parent
90b7084738
commit
960c760be0
@ -290,12 +290,13 @@ void pwdb_init_sam(struct sam_passwd *user)
|
||||
{
|
||||
if (user == NULL) return;
|
||||
bzero(user, sizeof(*user));
|
||||
unix_to_nt_time(&user->logon_time , (time_t)-1);
|
||||
unix_to_nt_time(&user->logoff_time , (time_t)-1);
|
||||
unix_to_nt_time(&user->kickoff_time , (time_t)-1);
|
||||
unix_to_nt_time(&user->pass_last_set_time , (time_t)-1);
|
||||
unix_to_nt_time(&user->pass_can_change_time , (time_t)-1);
|
||||
unix_to_nt_time(&user->pass_must_change_time , (time_t)-1);
|
||||
|
||||
init_nt_time(&user->logon_time);
|
||||
init_nt_time(&user->logoff_time);
|
||||
init_nt_time(&user->kickoff_time);
|
||||
init_nt_time(&user->pass_last_set_time);
|
||||
init_nt_time(&user->pass_can_change_time);
|
||||
init_nt_time(&user->pass_must_change_time);
|
||||
|
||||
user->unix_uid = (uid_t)-1;
|
||||
user->unix_gid = (gid_t)-1;
|
||||
@ -360,8 +361,6 @@ struct sam_passwd *pwdb_smb_to_sam(struct smb_passwd *user)
|
||||
static struct sam_passwd pw_buf;
|
||||
static fstring nt_name;
|
||||
static fstring unix_name;
|
||||
static time_t t;
|
||||
static int time_count = 0;
|
||||
|
||||
if (user == NULL) return NULL;
|
||||
|
||||
@ -377,29 +376,11 @@ struct sam_passwd *pwdb_smb_to_sam(struct smb_passwd *user)
|
||||
pw_buf.smb_nt_passwd = user->smb_nt_passwd;
|
||||
pw_buf.acct_ctrl = user->acct_ctrl;
|
||||
|
||||
/* Just update the time counter every 1,000 times though this function */
|
||||
switch (time_count) {
|
||||
case 0:
|
||||
DEBUG(3, ("Called time() in smb_to_sam function\n"));
|
||||
time (&t);
|
||||
time_count++;
|
||||
break;
|
||||
case 1000:
|
||||
time_count = 0;
|
||||
break;
|
||||
default:
|
||||
time_count++;
|
||||
break;
|
||||
}
|
||||
|
||||
if ( user->pass_last_set_time == (time_t)-1 )
|
||||
if ( user->pass_last_set_time != (time_t)-1 )
|
||||
{
|
||||
user->pass_last_set_time = t;
|
||||
}
|
||||
unix_to_nt_time(&pw_buf.pass_last_set_time, user->pass_last_set_time);
|
||||
unix_to_nt_time(&pw_buf.pass_can_change_time , user->pass_last_set_time);
|
||||
unix_to_nt_time(&pw_buf.pass_must_change_time, t+3628800);
|
||||
|
||||
unix_to_nt_time(&pw_buf.pass_last_set_time, user->pass_last_set_time);
|
||||
unix_to_nt_time(&pw_buf.pass_can_change_time, user->pass_last_set_time);
|
||||
}
|
||||
|
||||
return &pw_buf;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user