1
0
mirror of https://github.com/samba-team/samba.git synced 2025-01-12 09:18:10 +03:00

s3-net: prefer dcerpc_samr_X functions in rpc_fetch_domain_aliases.

Guenther
This commit is contained in:
Günther Deschner 2011-01-18 12:04:56 +01:00
parent bf10bbc074
commit 37f2f518be

View File

@ -4292,55 +4292,83 @@ static NTSTATUS rpc_fetch_domain_aliases(struct rpc_pipe_client *pipe_hnd,
{
uint32 start_idx, max_entries, num_entries, i;
struct samr_SamArray *groups = NULL;
NTSTATUS result;
NTSTATUS result, status;
struct policy_handle domain_pol;
struct dcerpc_binding_handle *b = pipe_hnd->binding_handle;
/* Get domain policy handle */
result = rpccli_samr_OpenDomain(pipe_hnd, mem_ctx,
status = dcerpc_samr_OpenDomain(b, mem_ctx,
connect_pol,
MAXIMUM_ALLOWED_ACCESS,
CONST_DISCARD(struct dom_sid2 *, domain_sid),
&domain_pol);
if (!NT_STATUS_IS_OK(result))
&domain_pol,
&result);
if (!NT_STATUS_IS_OK(status)) {
return status;
}
if (!NT_STATUS_IS_OK(result)) {
return result;
}
start_idx = 0;
max_entries = 250;
do {
result = rpccli_samr_EnumDomainAliases(pipe_hnd, mem_ctx,
status = dcerpc_samr_EnumDomainAliases(b, mem_ctx,
&domain_pol,
&start_idx,
&groups,
max_entries,
&num_entries);
&num_entries,
&result);
if (!NT_STATUS_IS_OK(status)) {
goto done;
}
for (i = 0; i < num_entries; i++) {
struct policy_handle alias_pol;
struct full_alias alias;
struct lsa_SidArray sid_array;
int j;
NTSTATUS _result;
result = rpccli_samr_OpenAlias(pipe_hnd, mem_ctx,
status = dcerpc_samr_OpenAlias(b, mem_ctx,
&domain_pol,
MAXIMUM_ALLOWED_ACCESS,
groups->entries[i].idx,
&alias_pol);
if (!NT_STATUS_IS_OK(result))
&alias_pol,
&_result);
if (!NT_STATUS_IS_OK(status)) {
goto done;
}
if (!NT_STATUS_IS_OK(_result)) {
status = _result;
goto done;
}
result = rpccli_samr_GetMembersInAlias(pipe_hnd, mem_ctx,
status = dcerpc_samr_GetMembersInAlias(b, mem_ctx,
&alias_pol,
&sid_array);
if (!NT_STATUS_IS_OK(result))
&sid_array,
&_result);
if (!NT_STATUS_IS_OK(status)) {
goto done;
}
if (!NT_STATUS_IS_OK(_result)) {
status = _result;
goto done;
}
alias.num_members = sid_array.num_sids;
result = rpccli_samr_Close(pipe_hnd, mem_ctx, &alias_pol);
if (!NT_STATUS_IS_OK(result))
status = dcerpc_samr_Close(b, mem_ctx, &alias_pol, &_result);
if (!NT_STATUS_IS_OK(status)) {
goto done;
}
if (!NT_STATUS_IS_OK(_result)) {
status = _result;
goto done;
}
alias.members = NULL;
@ -4359,12 +4387,12 @@ static NTSTATUS rpc_fetch_domain_aliases(struct rpc_pipe_client *pipe_hnd,
}
} while (NT_STATUS_EQUAL(result, STATUS_MORE_ENTRIES));
result = NT_STATUS_OK;
status = NT_STATUS_OK;
done:
rpccli_samr_Close(pipe_hnd, mem_ctx, &domain_pol);
dcerpc_samr_Close(b, mem_ctx, &domain_pol, &result);
return result;
return status;
}
/*