From 1f2fe8dee9df1228974ab713b77e470185552916 Mon Sep 17 00:00:00 2001 From: Andreas Schneider Date: Fri, 18 Jun 2010 19:08:41 +0200 Subject: s3-winbind: Use rpc_lookup_useraliases in msrpc. --- source3/winbindd/winbindd_msrpc.c | 120 +++++++++++++------------------------- 1 file changed, 41 insertions(+), 79 deletions(-) diff --git a/source3/winbindd/winbindd_msrpc.c b/source3/winbindd/winbindd_msrpc.c index c60e24967f..433423a396 100644 --- a/source3/winbindd/winbindd_msrpc.c +++ b/source3/winbindd/winbindd_msrpc.c @@ -538,98 +538,60 @@ done: static NTSTATUS msrpc_lookup_useraliases(struct winbindd_domain *domain, TALLOC_CTX *mem_ctx, uint32 num_sids, const struct dom_sid *sids, - uint32 *num_aliases, - uint32 **alias_rids) + uint32 *pnum_aliases, + uint32 **palias_rids) { - NTSTATUS result = NT_STATUS_UNSUCCESSFUL; + struct rpc_pipe_client *samr_pipe; struct policy_handle dom_pol; - uint32 num_query_sids = 0; - int i; - struct rpc_pipe_client *cli; - struct samr_Ids alias_rids_query; - int rangesize = MAX_SAM_ENTRIES_W2K; - uint32 total_sids = 0; - int num_queries = 1; + uint32_t num_aliases = 0; + uint32_t *alias_rids = NULL; + TALLOC_CTX *tmp_ctx; + NTSTATUS status; - *num_aliases = 0; - *alias_rids = NULL; + DEBUG(3,("msrpc_lookup_useraliases\n")); - DEBUG(3,("rpc: lookup_useraliases\n")); + if (pnum_aliases) { + *pnum_aliases = 0; + } - if ( !winbindd_can_contact_domain( domain ) ) { + tmp_ctx = talloc_stackframe(); + if (tmp_ctx == NULL) { + return NT_STATUS_NO_MEMORY; + } + + if (!winbindd_can_contact_domain(domain)) { DEBUG(10,("msrpc_lookup_useraliases: No incoming trust for domain %s\n", domain->name)); - return NT_STATUS_OK; + goto done; } - result = cm_connect_sam(domain, mem_ctx, &cli, &dom_pol); - if (!NT_STATUS_IS_OK(result)) - return result; - - do { - /* prepare query */ - struct lsa_SidArray sid_array; - - ZERO_STRUCT(sid_array); - - num_query_sids = MIN(num_sids - total_sids, rangesize); - - DEBUG(10,("rpc: lookup_useraliases: entering query %d for %d sids\n", - num_queries, num_query_sids)); - - if (num_query_sids) { - sid_array.sids = TALLOC_ZERO_ARRAY(mem_ctx, struct lsa_SidPtr, num_query_sids); - if (sid_array.sids == NULL) { - return NT_STATUS_NO_MEMORY; - } - } else { - sid_array.sids = NULL; - } - - for (i=0; i