summaryrefslogtreecommitdiff
path: root/source3/passdb/sampassdb.c
diff options
context:
space:
mode:
Diffstat (limited to 'source3/passdb/sampassdb.c')
-rw-r--r--source3/passdb/sampassdb.c27
1 files changed, 26 insertions, 1 deletions
diff --git a/source3/passdb/sampassdb.c b/source3/passdb/sampassdb.c
index 13b1279b2b..a76701a367 100644
--- a/source3/passdb/sampassdb.c
+++ b/source3/passdb/sampassdb.c
@@ -360,6 +360,8 @@ 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;
@@ -374,7 +376,30 @@ struct sam_passwd *pwdb_smb_to_sam(struct smb_passwd *user)
pw_buf.smb_passwd = user->smb_passwd;
pw_buf.smb_nt_passwd = user->smb_nt_passwd;
pw_buf.acct_ctrl = user->acct_ctrl;
- unix_to_nt_time(&pw_buf.pass_last_set_time, user->pass_last_set_time);
+
+ /* 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 )
+ {
+ 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);
+
return &pw_buf;
}