summaryrefslogtreecommitdiff
path: root/source3
diff options
context:
space:
mode:
authorAndrew Bartlett <abartlet@samba.org>2002-09-28 13:29:51 +0000
committerAndrew Bartlett <abartlet@samba.org>2002-09-28 13:29:51 +0000
commitac625a8235bcee8f56d26899c6f0ad7b13deae9a (patch)
tree035decd93137cb24e3891e153622f5d1ef981234 /source3
parent8b197158c9a7a4c881a86381f06c96d5091b5a76 (diff)
downloadsamba-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')
-rw-r--r--source3/auth/pass_check.c8
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. */