Kill off that crazy copy_sam_passwd(). You simply can't do that if the
authorAndrew Bartlett <abartlet@samba.org>
Sat, 24 Nov 2001 00:36:37 +0000 (00:36 +0000)
committerAndrew Bartlett <abartlet@samba.org>
Sat, 24 Nov 2001 00:36:37 +0000 (00:36 +0000)
structre contains pointers (well not if you intend of free those pointers
at some stage)

There is no reason (given the new passdb interface) that you can't modify a
SAM_ACCOUNT in any case.

Andrew Bartlett
(This used to be commit e8e73f7f0fcd86c8c2bfe3fc0b44ea2fd6570cc5)

source3/passdb/passdb.c
source3/rpc_server/srv_samr_nt.c

index dc8e5471e15408a0a73520f7bf52400fe4910e80..873e569f680f6ae9c950592199514a2f3e2d19a1 100644 (file)
@@ -867,18 +867,6 @@ void copy_id21_to_sam_passwd(SAM_ACCOUNT *to, SAM_USER_INFO_21 *from)
        to->unknown_6 = from->unknown_6;
 }
 
-/*************************************************************
- Copies a SAM_ACCOUNT.
- **************************************************************/
-
-void copy_sam_passwd(SAM_ACCOUNT *to, const SAM_ACCOUNT *from)
-{
-       if (!from || !to)
-               return;
-
-       memcpy(to, from, sizeof(SAM_ACCOUNT));
-}
-
 /*************************************************************
  Change a password entry in the local smbpasswd file.
 
index f1f3040ba4542938b0318952f3220637d6d07e0a..71237a9eec2fc33ada0102f553e91587ea3e216e 100644 (file)
@@ -2311,7 +2311,6 @@ static BOOL set_user_info_12(SAM_USER_INFO_12 *id12, uint32 rid)
 static BOOL set_user_info_21(SAM_USER_INFO_21 *id21, uint32 rid)
 {
        SAM_ACCOUNT *pwd = NULL;
-       SAM_ACCOUNT *new_pwd = NULL;
  
        if (id21 == NULL) {
                DEBUG(5, ("set_user_info_21: NULL id21\n"));
@@ -2319,17 +2318,13 @@ static BOOL set_user_info_21(SAM_USER_INFO_21 *id21, uint32 rid)
        }
  
        pdb_init_sam(&pwd);
-       pdb_init_sam(&new_pwd);
  
        if (!pdb_getsampwrid(pwd, rid)) {
                pdb_free_sam(&pwd);
-               pdb_free_sam(&new_pwd);
                return False;
        }
  
-       /* we make a copy so that we can modify stuff */
-       copy_sam_passwd(new_pwd, pwd);
-       copy_id21_to_sam_passwd(new_pwd, id21);
+       copy_id21_to_sam_passwd(pwd, id21);
  
        /*
         * The funny part about the previous two calls is
@@ -2339,14 +2334,12 @@ static BOOL set_user_info_21(SAM_USER_INFO_21 *id21, uint32 rid)
         */
  
        /* write the change out */
-       if(!pdb_update_sam_account(new_pwd, True)) {
+       if(!pdb_update_sam_account(pwd, True)) {
                pdb_free_sam(&pwd);
-               pdb_free_sam(&new_pwd);
                return False;
        }
 
        pdb_free_sam(&pwd);
-       pdb_free_sam(&new_pwd);
 
        return True;
 }
@@ -2358,7 +2351,6 @@ static BOOL set_user_info_21(SAM_USER_INFO_21 *id21, uint32 rid)
 static BOOL set_user_info_23(SAM_USER_INFO_23 *id23, uint32 rid)
 {
        SAM_ACCOUNT *pwd = NULL;
-       SAM_ACCOUNT *new_pwd = NULL;
        pstring plaintext_buf;
        uint32 len;
        uint16 acct_ctrl;
@@ -2369,28 +2361,23 @@ static BOOL set_user_info_23(SAM_USER_INFO_23 *id23, uint32 rid)
        }
  
        pdb_init_sam(&pwd);
-       pdb_init_sam(&new_pwd);
  
        if (!pdb_getsampwrid(pwd, rid)) {
                pdb_free_sam(&pwd);
-               pdb_free_sam(&new_pwd);
                return False;
        }
 
        acct_ctrl = pdb_get_acct_ctrl(pwd);
 
-       copy_sam_passwd(new_pwd, pwd);
-       pdb_free_sam(&pwd);
-       
-       copy_id23_to_sam_passwd(new_pwd, id23);
+       copy_id23_to_sam_passwd(pwd, id23);
  
        if (!decode_pw_buffer((char*)id23->pass, plaintext_buf, 256, &len)) {
-               pdb_free_sam(&new_pwd);
+               pdb_free_sam(&pwd);
                return False;
        }
   
-       if (!pdb_set_plaintext_passwd (new_pwd, plaintext_buf)) {
-               pdb_free_sam(&new_pwd);
+       if (!pdb_set_plaintext_passwd (pwd, plaintext_buf)) {
+               pdb_free_sam(&pwd);
                return False;
        }
  
@@ -2402,20 +2389,20 @@ static BOOL set_user_info_23(SAM_USER_INFO_23 *id23, uint32 rid)
        } else  {
                /* update the UNIX password */
                if (lp_unix_password_sync() )
-                       if(!chgpasswd(pdb_get_username(new_pwd), "", plaintext_buf, True)) {
-                               pdb_free_sam(&new_pwd);
+                       if(!chgpasswd(pdb_get_username(pwd), "", plaintext_buf, True)) {
+                               pdb_free_sam(&pwd);
                                return False;
                        }
        }
  
        ZERO_STRUCT(plaintext_buf);
  
-       if(!pdb_update_sam_account(new_pwd, True)) {
-               pdb_free_sam(&new_pwd);
+       if(!pdb_update_sam_account(pwd, True)) {
+               pdb_free_sam(&pwd);
                return False;
        }
  
-       pdb_free_sam(&new_pwd);
+       pdb_free_sam(&pwd);
 
        return True;
 }