From 3eae1e3f8e53c51f638b1b381085f29feea1c517 Mon Sep 17 00:00:00 2001 From: Jeremy Allison Date: Thu, 30 Apr 1998 01:39:22 +0000 Subject: Added patch from Bruce Tenison to allow encrypted passwords to be stored over time, allowing a smbpasswd file migration. Adds new parameter "update encrypted". Will also add to 1.9.18 branch. Docs update to follow. Jeremy. (This used to be commit 5d3e874d780d595415cc27a7f5945fc2e694c3ac) --- source3/passdb/smbpass.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'source3/passdb') diff --git a/source3/passdb/smbpass.c b/source3/passdb/smbpass.c index 2ab21f78ef..cd3cc76909 100644 --- a/source3/passdb/smbpass.c +++ b/source3/passdb/smbpass.c @@ -731,9 +731,11 @@ Error was %s. Password file may be corrupt ! Please examine by hand !\n", and then modify its password entry. We can't use the startsmbpwent()/ getsmbpwent()/endsmbpwent() interfaces here as we depend on looking in the actual file to decide how much room we have to write data. + override = False, normal + override = True, override XXXXXXXX'd out password or NO PASS ************************************************************************/ -BOOL mod_smbpwd_entry(struct smb_passwd* pwd) +BOOL mod_smbpwd_entry(struct smb_passwd* pwd, BOOL override) { /* Static buffers we will return. */ static pstring user_name; @@ -895,9 +897,9 @@ BOOL mod_smbpwd_entry(struct smb_passwd* pwd) /* Record exact password position */ pwd_seekpos += PTR_DIFF(p, linebuf); - if (*p == '*' || *p == 'X') { + if (!override && (*p == '*' || *p == 'X')) { /* Password deliberately invalid - end here. */ - DEBUG(10, ("get_smbpwd_entry: entry invalidated for user %s\n", user_name)); + DEBUG(10, ("mod_smbpwd_entry: entry invalidated for user %s\n", user_name)); pw_file_unlock(lockfd, &pw_file_lock_depth); fclose(fp); return False; @@ -917,7 +919,7 @@ BOOL mod_smbpwd_entry(struct smb_passwd* pwd) return False; } - if (*p == '*' || *p == 'X') { + if (!override && (*p == '*' || *p == 'X')) { pw_file_unlock(lockfd,&pw_file_lock_depth); fclose(fp); return False; -- cgit