s3:rpcclient: use talloc_stackframe() in do_cmd()
authorStefan Metzmacher <metze@samba.org>
Fri, 22 Mar 2013 14:07:10 +0000 (15:07 +0100)
committerAndreas Schneider <asn@samba.org>
Mon, 5 Aug 2013 08:30:01 +0000 (10:30 +0200)
Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Andreas Schneider <asn@samba.org>
source3/rpcclient/rpcclient.c

index c23ff2df25cc9e76c219dbee4b498103e0bfa5b1..9bf296ecc567dc82b6b4d2633cd12a7ca9dd5b6c 100644 (file)
@@ -678,7 +678,7 @@ static NTSTATUS do_cmd(struct cli_state *cli,
 
        /* Create mem_ctx */
 
-       if (!(mem_ctx = talloc_init("do_cmd"))) {
+       if (!(mem_ctx = talloc_stackframe())) {
                DEBUG(0, ("talloc_init() failed\n"));
                return NT_STATUS_NO_MEMORY;
        }
@@ -745,12 +745,14 @@ static NTSTATUS do_cmd(struct cli_state *cli,
                                  "auth type %u\n",
                                  cmd_entry->table->name,
                                  pipe_default_auth_type ));
+                       talloc_free(mem_ctx);
                        return NT_STATUS_UNSUCCESSFUL;
                }
                if (!NT_STATUS_IS_OK(ntresult)) {
                        DEBUG(0, ("Could not initialise %s. Error was %s\n",
                                  cmd_entry->table->name,
                                  nt_errstr(ntresult) ));
+                       talloc_free(mem_ctx);
                        return ntresult;
                }
 
@@ -765,6 +767,7 @@ static NTSTATUS do_cmd(struct cli_state *cli,
                                               trust_password, &machine_account,
                                               &sec_channel_type))
                        {
+                               talloc_free(mem_ctx);
                                return NT_STATUS_CANT_ACCESS_DOMAIN_INFO;
                        }
 
@@ -780,6 +783,7 @@ static NTSTATUS do_cmd(struct cli_state *cli,
                        if (!NT_STATUS_IS_OK(ntresult)) {
                                DEBUG(0, ("Could not initialise credentials for %s.\n",
                                          cmd_entry->table->name));
+                               talloc_free(mem_ctx);
                                return ntresult;
                        }
                }
@@ -803,7 +807,7 @@ static NTSTATUS do_cmd(struct cli_state *cli,
 
        /* Cleanup */
 
-       talloc_destroy(mem_ctx);
+       talloc_free(mem_ctx);
 
        return ntresult;
 }