summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthew Chapman <matty@samba.org>1999-02-01 02:37:45 +0000
committerMatthew Chapman <matty@samba.org>1999-02-01 02:37:45 +0000
commit960c760be0b84c4348288eb3bec6dd33e9c5c9b4 (patch)
tree314799452cb75631c4d68db81c4a324c3c90cfd7
parent90b708473887ac11ca81f5a056ae5d2c854cf616 (diff)
downloadsamba-960c760be0b84c4348288eb3bec6dd33e9c5c9b4.tar.gz
samba-960c760be0b84c4348288eb3bec6dd33e9c5c9b4.tar.bz2
samba-960c760be0b84c4348288eb3bec6dd33e9c5c9b4.zip
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 e9c79c85e6d1352693ab13e907b07d4706975891)
-rw-r--r--source3/passdb/sampassdb.c41
1 files changed, 11 insertions, 30 deletions
diff --git a/source3/passdb/sampassdb.c b/source3/passdb/sampassdb.c
index a76701a367..25be7b9ec5 100644
--- a/source3/passdb/sampassdb.c
+++ b/source3/passdb/sampassdb.c
@@ -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;
}