From db4fde99d4a6ab45f6b1b1883c024420c38ccbaf Mon Sep 17 00:00:00 2001 From: Jeremy Allison Date: Fri, 30 Jul 2004 02:19:10 +0000 Subject: r1610: Patch from Richard Renard . Ensure we save the password as it is being changed into the password history list. Jeremy. (This used to be commit 4fd619d7e16b5f759e6dc8360ad192457b3c90b9) --- source3/passdb/pdb_get_set.c | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) (limited to 'source3') diff --git a/source3/passdb/pdb_get_set.c b/source3/passdb/pdb_get_set.c index 0877e8b1f4..dc8a2f68d2 100644 --- a/source3/passdb/pdb_get_set.c +++ b/source3/passdb/pdb_get_set.c @@ -1172,18 +1172,10 @@ BOOL pdb_set_plaintext_passwd (SAM_ACCOUNT *sampass, const char *plaintext) { uchar new_lanman_p16[LM_HASH_LEN]; uchar new_nt_p16[NT_HASH_LEN]; - uchar current_ntpw_copy[NT_HASH_LEN]; - const uchar *current_ntpw; if (!sampass || !plaintext) return False; - /* Store the current password for history purposes. */ - current_ntpw = pdb_get_nt_passwd(sampass); - if (current_ntpw) { - memcpy (current_ntpw_copy, current_ntpw, NT_HASH_LEN); - } - /* Calculate the MD4 hash (NT compatible) of the password */ E_md4hash(plaintext, new_nt_p16); @@ -1233,11 +1225,13 @@ BOOL pdb_set_plaintext_passwd (SAM_ACCOUNT *sampass, const char *plaintext) pwHistLen = current_history_len; } } - if (pwhistory && current_ntpw && pwHistLen){ + if (pwhistory && pwHistLen){ + /* Make room for the new password in the history list. */ if (pwHistLen > 1) { memmove(&pwhistory[NT_HASH_LEN], pwhistory, (pwHistLen -1)*NT_HASH_LEN ); } - memcpy(pwhistory, current_ntpw_copy, NT_HASH_LEN); + /* Ensure we have a copy of the new password as the first history entry. */ + memcpy(pwhistory, new_nt_p16, NT_HASH_LEN); pdb_set_pw_history(sampass, pwhistory, pwHistLen, PDB_CHANGED); } else { DEBUG (10,("pdb_get_set.c: pdb_set_plaintext_passwd: pwhistory was NULL!\n")); -- cgit