Fix error return path memory leaks in vampire code for creating users.
authorTim Potter <tpot@samba.org>
Wed, 10 Sep 2003 06:58:41 +0000 (06:58 +0000)
committerTim Potter <tpot@samba.org>
Wed, 10 Sep 2003 06:58:41 +0000 (06:58 +0000)
Display an error if we can't create a posix account for the user
(e.g no add user/machine script was specified; bug #323).
(This used to be commit 0c35ba2cd65ff64c5db2b20d5528a0d486cba51e)

source3/utils/net_rpc_samsync.c

index 4d8fa5e7e233d5406fd113bfcc7868a701ab781a..64f2d3f68f9e96ef9b84cffb3d80248e09323584 100644 (file)
@@ -428,9 +428,10 @@ static NTSTATUS fetch_account_info(uint32 rid, SAM_ACCOUNT_INFO *delta)
                            (delta->acb_info & ACB_DOMTRUST) ) {
                        pstrcpy(add_script, lp_addmachine_script());
                } else {
-                       *add_script = '\0';
                        DEBUG(1, ("Unknown user type: %s\n",
                                  smbpasswd_encode_acb_info(delta->acb_info)));
+                       nt_ret = NT_STATUS_UNSUCCESSFUL;
+                       goto done;
                }
                if (*add_script) {
                        int add_ret;
@@ -448,8 +449,11 @@ static NTSTATUS fetch_account_info(uint32 rid, SAM_ACCOUNT_INFO *delta)
                }
                
                /* try and find the possible unix account again */
-               if ( !(passwd = Get_Pwnam(account)) )
-                       return NT_STATUS_NO_SUCH_USER;
+               if ( !(passwd = Get_Pwnam(account)) ) {
+                       d_printf("Could not create posix account info for '%s'\n", account);
+                       nt_ret = NT_STATUS_NO_SUCH_USER;
+                       goto done;
+               }
                        
        }
        
@@ -499,6 +503,7 @@ static NTSTATUS fetch_account_info(uint32 rid, SAM_ACCOUNT_INFO *delta)
                        pdb_get_username(sam_account)));
        }
 
+ done:
        pdb_free_sam(&sam_account);
        return nt_ret;
 }