diff options
author | Andrew Bartlett <abartlet@samba.org> | 2002-09-28 13:29:51 +0000 |
---|---|---|
committer | Andrew Bartlett <abartlet@samba.org> | 2002-09-28 13:29:51 +0000 |
commit | ac625a8235bcee8f56d26899c6f0ad7b13deae9a (patch) | |
tree | 035decd93137cb24e3891e153622f5d1ef981234 /source3/auth | |
parent | 8b197158c9a7a4c881a86381f06c96d5091b5a76 (diff) | |
download | samba-ac625a8235bcee8f56d26899c6f0ad7b13deae9a.tar.gz samba-ac625a8235bcee8f56d26899c6f0ad7b13deae9a.tar.bz2 samba-ac625a8235bcee8f56d26899c6f0ad7b13deae9a.zip |
Second stab at Volker's 'make shadow passwords work' patch.
Basicly, the password and the salt must be taken from the same place in both
passwd and shadow based systems. Taking salt from one, and password from the
other just doesn't work.
So pull them from passwd, then overwrite them if need be.
When modifying this file, watch the #ifdef hell - as vl found out, some
variables are globals - but only with #ifndef WITH_PAM, and the code jumps all
over the place with the password cracker.
Getting double-reviews of any change to this file highly advised, it is one of
our most system-specifc areas of code.
(So now I get to take the blame for this one... :-)
Andrew Bartlett
(This used to be commit f39f167900db3f06ec3c52c3ddf61e8bf3d57f56)
Diffstat (limited to 'source3/auth')
-rw-r--r-- | source3/auth/pass_check.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/source3/auth/pass_check.c b/source3/auth/pass_check.c index 63918796ef..e1783bfd1e 100644 --- a/source3/auth/pass_check.c +++ b/source3/auth/pass_check.c @@ -634,6 +634,7 @@ NTSTATUS pass_check(const struct passwd *pass, const char *user, const char *pas /* Also the place to keep the 'password' no matter what crazy struct it started in... */ fstrcpy(this_crypted, pass->pw_passwd); + fstrcpy(this_salt, pass->pw_passwd); #ifdef HAVE_GETSPNAM { @@ -645,8 +646,10 @@ NTSTATUS pass_check(const struct passwd *pass, const char *user, const char *pas perhaps for IPC password changing requests */ spass = getspnam(pass->pw_name); - if (spass && spass->sp_pwdp) + if (spass && spass->sp_pwdp) { fstrcpy(this_crypted, spass->sp_pwdp); + fstrcpy(this_salt, spass->sp_pwdp); + } } #elif defined(IA_UINFO) { @@ -704,9 +707,6 @@ NTSTATUS pass_check(const struct passwd *pass, const char *user, const char *pas } #endif - /* extract relevant info */ - fstrcpy(this_salt, pass->pw_passwd); - #if defined(HAVE_TRUNCATED_SALT) /* crypt on some platforms (HPUX in particular) won't work with more than 2 salt characters. */ |