From 2e73c54fe37d7f721e72b9ebc4d59ee44025088e Mon Sep 17 00:00:00 2001 From: Günther Deschner Date: Tue, 5 Feb 2008 01:18:56 +0100 Subject: Use rpccli_samr_GetMembersInAlias() in net and rpcclient. Guenther (This used to be commit 3f48f9e671698235a4152102cf73a694b94542e0) --- source3/rpcclient/cmd_samr.c | 13 +++++++------ source3/utils/net_rpc.c | 32 ++++++++++++++++++++++++-------- 2 files changed, 31 insertions(+), 14 deletions(-) (limited to 'source3') diff --git a/source3/rpcclient/cmd_samr.c b/source3/rpcclient/cmd_samr.c index dbc20089ea..5895379ba7 100644 --- a/source3/rpcclient/cmd_samr.c +++ b/source3/rpcclient/cmd_samr.c @@ -1100,9 +1100,9 @@ static NTSTATUS cmd_samr_query_aliasmem(struct rpc_pipe_client *cli, { POLICY_HND connect_pol, domain_pol, alias_pol; NTSTATUS result = NT_STATUS_UNSUCCESSFUL; - uint32 alias_rid, num_members, i; + uint32 alias_rid, i; uint32 access_mask = MAXIMUM_ALLOWED_ACCESS; - DOM_SID *alias_sids; + struct lsa_SidArray sid_array; if ((argc < 3) || (argc > 4)) { printf("Usage: %s builtin|domain rid [access mask]\n", argv[0]); @@ -1152,16 +1152,17 @@ static NTSTATUS cmd_samr_query_aliasmem(struct rpc_pipe_client *cli, if (!NT_STATUS_IS_OK(result)) goto done; - result = rpccli_samr_query_aliasmem(cli, mem_ctx, &alias_pol, - &num_members, &alias_sids); + result = rpccli_samr_GetMembersInAlias(cli, mem_ctx, + &alias_pol, + &sid_array); if (!NT_STATUS_IS_OK(result)) goto done; - for (i = 0; i < num_members; i++) { + for (i = 0; i < sid_array.num_sids; i++) { fstring sid_str; - sid_to_fstring(sid_str, &alias_sids[i]); + sid_to_fstring(sid_str, sid_array.sids[i].sid); printf("\tsid:[%s]\n", sid_str); } diff --git a/source3/utils/net_rpc.c b/source3/utils/net_rpc.c index 432900507d..7887960a60 100644 --- a/source3/utils/net_rpc.c +++ b/source3/utils/net_rpc.c @@ -2874,6 +2874,7 @@ static NTSTATUS rpc_list_alias_members(struct rpc_pipe_client *pipe_hnd, char **names; enum lsa_SidType *types; int i; + struct lsa_SidArray sid_array; result = rpccli_samr_OpenAlias(pipe_hnd, mem_ctx, domain_pol, @@ -2884,14 +2885,17 @@ static NTSTATUS rpc_list_alias_members(struct rpc_pipe_client *pipe_hnd, if (!NT_STATUS_IS_OK(result)) return result; - result = rpccli_samr_query_aliasmem(pipe_hnd, mem_ctx, &alias_pol, - &num_members, &alias_sids); + result = rpccli_samr_GetMembersInAlias(pipe_hnd, mem_ctx, + &alias_pol, + &sid_array); if (!NT_STATUS_IS_OK(result)) { d_fprintf(stderr, "Couldn't list alias members\n"); return result; } + num_members = sid_array.num_sids; + if (num_members == 0) { return NT_STATUS_OK; } @@ -2912,6 +2916,17 @@ static NTSTATUS rpc_list_alias_members(struct rpc_pipe_client *pipe_hnd, return result; } + alias_sids = TALLOC_ZERO_ARRAY(mem_ctx, DOM_SID, num_members); + if (!alias_sids) { + d_fprintf(stderr, "Out of memory\n"); + cli_rpc_pipe_close(lsa_pipe); + return NT_STATUS_NO_MEMORY; + } + + for (i=0; i