From b2e39ddcf7f2a15024ea212c7047810e3523dbe8 Mon Sep 17 00:00:00 2001 From: Andrew Bartlett Date: Fri, 28 Sep 2001 04:48:36 +0000 Subject: How the heck I missed this I don't know, but somehow I got a copy-and-paste error in here... Now you can change local passwords again. There is stil somthing broken about remote (via windows/sampasswd) password changing. I shall have to revise my testing, I honestly don't know how this slipped through the net. MERGE for 2.2.2. Sorry, Andrew Bartlett (This used to be commit 1f83184f881d0cabb698947660a12f729e625fae) --- source3/passdb/passdb.c | 28 ++++++++++++---------------- 1 file changed, 12 insertions(+), 16 deletions(-) (limited to 'source3/passdb/passdb.c') diff --git a/source3/passdb/passdb.c b/source3/passdb/passdb.c index d29f140314..b3efebe5ff 100644 --- a/source3/passdb/passdb.c +++ b/source3/passdb/passdb.c @@ -847,7 +847,6 @@ BOOL local_password_change(char *user_name, int local_flags, { struct passwd *pwd = NULL; SAM_ACCOUNT *sam_pass=NULL; - SAM_ACCOUNT *new_sam_acct=NULL; *err_str = '\0'; *msg_str = '\0'; @@ -876,34 +875,31 @@ account without a valid local system user.\n", user_name); return False; } - /* create the SAM_ACCOUNT struct and call pdb_add_sam_account. - Because the new_sam_pwd only exists in the scope of this function - we will not allocate memory for members */ - if (!pdb_init_sam_pw(&new_sam_acct, pwd)) { + if (!pdb_init_sam_pw(&sam_pass, pwd)) { return False; } /* set account flags */ - pdb_set_acct_ctrl(new_sam_acct,((local_flags & LOCAL_TRUST_ACCOUNT) ? ACB_WSTRUST : ACB_NORMAL) ); + pdb_set_acct_ctrl(sam_pass,((local_flags & LOCAL_TRUST_ACCOUNT) ? ACB_WSTRUST : ACB_NORMAL) ); if (local_flags & LOCAL_DISABLE_USER) - pdb_set_acct_ctrl (new_sam_acct, pdb_get_acct_ctrl(new_sam_acct)|ACB_DISABLED); + pdb_set_acct_ctrl (sam_pass, pdb_get_acct_ctrl(sam_pass)|ACB_DISABLED); - if (local_flags & LOCAL_SET_NO_PASSWORD) - pdb_set_acct_ctrl (new_sam_acct, pdb_get_acct_ctrl(new_sam_acct)|ACB_PWNOTREQ); - else { + if (local_flags & LOCAL_SET_NO_PASSWORD) { + pdb_set_acct_ctrl (sam_pass, pdb_get_acct_ctrl(sam_pass)|ACB_PWNOTREQ); + } else { /* set the passwords here. if we get to here it means we have a valid, active account */ - pdb_set_plaintext_passwd (new_sam_acct, new_passwd); + pdb_set_plaintext_passwd (sam_pass, new_passwd); } - if (pdb_add_sam_account(new_sam_acct)) { + if (pdb_add_sam_account(sam_pass)) { slprintf(msg_str, msg_str_len-1, "Added user %s.\n", user_name); - pdb_free_sam(new_sam_acct); + pdb_free_sam(sam_pass); return True; } else { slprintf(err_str, err_str_len-1, "Failed to add entry for user %s.\n", user_name); - pdb_free_sam(new_sam_acct); + pdb_free_sam(sam_pass); return False; } } else { @@ -920,7 +916,7 @@ account without a valid local system user.\n", user_name); pdb_set_acct_ctrl (sam_pass, pdb_get_acct_ctrl(sam_pass)|ACB_DISABLED); } else if (local_flags & LOCAL_ENABLE_USER) { if(pdb_get_lanman_passwd(sam_pass) == NULL) { - pdb_set_plaintext_passwd (new_sam_acct, new_passwd); + pdb_set_plaintext_passwd (sam_pass, new_passwd); } pdb_set_acct_ctrl (sam_pass, pdb_get_acct_ctrl(sam_pass)&(~ACB_DISABLED)); } else if (local_flags & LOCAL_SET_NO_PASSWORD) { @@ -942,7 +938,7 @@ account without a valid local system user.\n", user_name); if ((pdb_get_lanman_passwd(sam_pass)==NULL) && (pdb_get_acct_ctrl(sam_pass)&ACB_DISABLED)) pdb_set_acct_ctrl (sam_pass, pdb_get_acct_ctrl(sam_pass)&(~ACB_DISABLED)); pdb_set_acct_ctrl (sam_pass, pdb_get_acct_ctrl(sam_pass)&(~ACB_PWNOTREQ)); - pdb_set_plaintext_passwd (new_sam_acct, new_passwd); + pdb_set_plaintext_passwd (sam_pass, new_passwd); } if(local_flags & LOCAL_DELETE_USER) { -- cgit