diff options
author | Gerald Carter <jerry@samba.org> | 1999-01-13 00:48:25 +0000 |
---|---|---|
committer | Gerald Carter <jerry@samba.org> | 1999-01-13 00:48:25 +0000 |
commit | b86b8a3ea887e12f0614e14da01419e5c224d038 (patch) | |
tree | a4733c3913a7dd5c901d2ec14e2f2594c5b03a2a | |
parent | 7ff9823689638b1a7f82c277a6c825f4ac883d96 (diff) | |
download | samba-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.c | 27 | ||||
-rw-r--r-- | source3/passdb/smbpass.c | 4 |
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++; |