summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGerald Carter <jerry@samba.org>1999-01-13 00:48:25 +0000
committerGerald Carter <jerry@samba.org>1999-01-13 00:48:25 +0000
commitb86b8a3ea887e12f0614e14da01419e5c224d038 (patch)
treea4733c3913a7dd5c901d2ec14e2f2594c5b03a2a
parent7ff9823689638b1a7f82c277a6c825f4ac883d96 (diff)
downloadsamba-b86b8a3ea887e12f0614e14da01419e5c224d038.tar.gz
samba-b86b8a3ea887e12f0614e14da01419e5c224d038.tar.bz2
samba-b86b8a3ea887e12f0614e14da01419e5c224d038.zip
Fixed the "You password will expire in 0 days. Would you like to
change it now?" message when you login to a Samba Controlled domain. The fix is a hard coded 42 days from right now until you need to change you pasword again time (see passdb/sampassdb.c:pwdb_smb_to_sam()) Also fixed getsmbfilepwent() so that it will read in the last password change time correctly. * Related to this lib/util_pwdb.c:StrnCaseCmp() returns 0 if the strings match. Chouldn't this be the pther way? Oh well. I didn't change the return code as it was used in several other cases (see lib/util_pwdb.c:pwdb_get_last_set_time()) (This used to be commit 175e598dccd042c0f8b045db45fbe3ae928a7387)
-rw-r--r--source3/passdb/sampassdb.c27
-rw-r--r--source3/passdb/smbpass.c4
2 files changed, 30 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;
}
diff --git a/source3/passdb/smbpass.c b/source3/passdb/smbpass.c
index 8972351d90..b1ca9ad071 100644
--- a/source3/passdb/smbpass.c
+++ b/source3/passdb/smbpass.c
@@ -208,6 +208,10 @@ static struct smb_passwd *getsmbfilepwent(void *vp)
}
/* Now try and get the last change time. */
+ while (*p != ']' && *p != ':')
+ {
+ p++;
+ }
if (*p == ']')
{
p++;