diff options
author | Andrew Bartlett <abartlet@samba.org> | 2005-03-22 08:00:45 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 13:11:11 -0500 |
commit | 645711c602313940dcf80ec786557920ecfbf884 (patch) | |
tree | 77c5f5c5f1285677eaaf7a3fa62bf0b2540e153f /source4/torture/rpc/mgmt.c | |
parent | 376b03ebd895b221b70058ee18bea50587388182 (diff) | |
download | samba-645711c602313940dcf80ec786557920ecfbf884.tar.gz samba-645711c602313940dcf80ec786557920ecfbf884.tar.bz2 samba-645711c602313940dcf80ec786557920ecfbf884.zip |
r5941: Commit this patch much earlier than I would normally prefer, but metze needs a working tree...
The main volume of this patch was what I started working on today:
- Cleans up memory handling around DCE/RPC pipes, to have a parent talloc context.
- Uses sepereate inner loops for some of the DCE/RPC tests
The other and more important part of this patch fixes issues
surrounding the new credentials framwork:
This makes the struct cli_credentials always a talloc() structure,
rather than on the stack. Parts of the cli_credentials code already
assumed this.
There were other issues, particularly in the DCERPC over SMB handling,
as well as little things that had to be tidied up before test_w2k3.sh
would start to pass.
Andrew Bartlett
(This used to be commit 0453f9d05d2e336fba1f85dbf2718d01fa2bf778)
Diffstat (limited to 'source4/torture/rpc/mgmt.c')
-rw-r--r-- | source4/torture/rpc/mgmt.c | 30 |
1 files changed, 18 insertions, 12 deletions
diff --git a/source4/torture/rpc/mgmt.c b/source4/torture/rpc/mgmt.c index cb2023b64c..be9cf649d3 100644 --- a/source4/torture/rpc/mgmt.c +++ b/source4/torture/rpc/mgmt.c @@ -177,7 +177,7 @@ BOOL torture_rpc_mgmt(void) { NTSTATUS status; struct dcerpc_pipe *p; - TALLOC_CTX *mem_ctx; + TALLOC_CTX *mem_ctx, *loop_ctx; BOOL ret = True; const char *binding = lp_parm_string(-1, "torture", "binding"); const struct dcerpc_interface_list *l; @@ -192,24 +192,29 @@ BOOL torture_rpc_mgmt(void) status = dcerpc_parse_binding(mem_ctx, binding, &b); if (!NT_STATUS_IS_OK(status)) { + talloc_free(mem_ctx); printf("Failed to parse binding '%s'\n", binding); return False; } for (l=librpc_dcerpc_pipes();l;l=l->next) { + loop_ctx = talloc_named(mem_ctx, 0, "torture_rpc_mgmt loop context"); + /* some interfaces are not mappable */ if (l->table->num_calls == 0 || strcmp(l->table->name, "mgmt") == 0) { + talloc_free(loop_ctx); continue; } printf("\nTesting pipe '%s'\n", l->table->name); if (b->transport == NCACN_IP_TCP) { - status = dcerpc_epm_map_binding(mem_ctx, b, - l->table->uuid, - l->table->if_version); + status = dcerpc_epm_map_binding(loop_ctx, b, + l->table->uuid, + l->table->if_version); if (!NT_STATUS_IS_OK(status)) { + talloc_free(loop_ctx); printf("Failed to map port for uuid %s\n", l->table->uuid); continue; } @@ -217,38 +222,39 @@ BOOL torture_rpc_mgmt(void) b->endpoint = talloc_strdup(b, l->table->name); } - lp_set_cmdline("torture:binding", dcerpc_binding_string(mem_ctx, b)); + lp_set_cmdline("torture:binding", dcerpc_binding_string(loop_ctx, b)); - status = torture_rpc_connection(&p, + status = torture_rpc_connection(loop_ctx, + &p, l->table->name, DCERPC_MGMT_UUID, DCERPC_MGMT_VERSION); if (!NT_STATUS_IS_OK(status)) { + talloc_free(loop_ctx); ret = False; continue; } - if (!test_is_server_listening(p, mem_ctx)) { + if (!test_is_server_listening(p, loop_ctx)) { ret = False; } - if (!test_stop_server_listening(p, mem_ctx)) { + if (!test_stop_server_listening(p, loop_ctx)) { ret = False; } - if (!test_inq_stats(p, mem_ctx)) { + if (!test_inq_stats(p, loop_ctx)) { ret = False; } - if (!test_inq_princ_name(p, mem_ctx)) { + if (!test_inq_princ_name(p, loop_ctx)) { ret = False; } - if (!test_inq_if_ids(p, mem_ctx)) { + if (!test_inq_if_ids(p, loop_ctx)) { ret = False; } - torture_rpc_close(p); } return ret; |