r1537: Fix to stop printing accounts from resetting the bas password
authorJeremy Allison <jra@samba.org>
Sat, 17 Jul 2004 01:06:52 +0000 (01:06 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 15:52:14 +0000 (10:52 -0500)
and account lockout flags. This is set when an account is updated
only from smbd or pdbedit. Bug found by "Dunn, Drew A." <Drew.Dunn@jhuapl.edu>.
Jeremy.

source/utils/pdbedit.c

index 16d0d407692ef07045bffbfb61482e4e806ec2bd..1201cf88fcf4f26a8cdb3a5c261cbf3516ffe1b6 100644 (file)
@@ -202,7 +202,6 @@ static int print_user_info (struct pdb_context *in, const char *username, BOOL v
 {
        SAM_ACCOUNT *sam_pwent=NULL;
        BOOL ret;
-       BOOL updated_autolock = False, updated_badpw = False;
 
        if (!NT_STATUS_IS_OK(pdb_init_sam (&sam_pwent))) {
                return -1;
@@ -216,19 +215,6 @@ static int print_user_info (struct pdb_context *in, const char *username, BOOL v
                return -1;
        }
 
-       if (!pdb_update_autolock_flag(sam_pwent, &updated_autolock))
-               DEBUG(2,("pdb_update_autolock_flag failed.\n"));
-
-       if (!pdb_update_bad_password_count(sam_pwent, &updated_badpw))
-               DEBUG(2,("pdb_update_bad_password_count failed.\n"));
-
-       if (updated_autolock || updated_badpw) {
-               become_root();
-               if(!pdb_update_sam_account(sam_pwent))
-                       DEBUG(1, ("Failed to modify entry.\n"));
-               unbecome_root();
-       }
-
        ret=print_sam_info (sam_pwent, verbosity, smbpwdstyle);
        pdb_free_sam(&sam_pwent);
        
@@ -310,6 +296,7 @@ static int set_user_info (struct pdb_context *in, const char *username,
                          const char *user_sid, const char *group_sid,
                          const BOOL badpw)
 {
+       BOOL updated_autolock = False, updated_badpw = False;
        SAM_ACCOUNT *sam_pwent=NULL;
        BOOL ret;
        
@@ -322,6 +309,14 @@ static int set_user_info (struct pdb_context *in, const char *username,
                return -1;
        }
        
+       if (!pdb_update_autolock_flag(sam_pwent, &updated_autolock)) {
+               DEBUG(2,("pdb_update_autolock_flag failed.\n"));
+       }
+
+       if (!pdb_update_bad_password_count(sam_pwent, &updated_badpw)) {
+               DEBUG(2,("pdb_update_bad_password_count failed.\n"));
+       }
+
        if (fullname)
                pdb_set_fullname(sam_pwent, fullname, PDB_CHANGED);
        if (homedir)
@@ -384,7 +379,7 @@ static int set_user_info (struct pdb_context *in, const char *username,
                pdb_set_bad_password_count(sam_pwent, 0, PDB_CHANGED);
                pdb_set_bad_password_time(sam_pwent, 0, PDB_CHANGED);
        }
-       
+
        if (NT_STATUS_IS_OK(in->pdb_update_sam_account (in, sam_pwent)))
                print_user_info (in, username, True, False);
        else {