static NTSTATUS enum_local_groups(struct winbindd_domain *domain, TALLOC_CTX *mem_ctx, uint32 *num_entries, struct acct_info **info) { struct pdb_search *search; struct samr_displayentry *aliases; int i; NTSTATUS result = NT_STATUS_UNSUCCESSFUL; search = pdb_search_aliases(&domain->sid); if (search == NULL) goto done; *num_entries = pdb_search_entries(search, 0, 0xffffffff, &aliases); if (*num_entries == 0) goto done; *info = TALLOC_ARRAY(mem_ctx, struct acct_info, *num_entries); if (*info == NULL) { result = NT_STATUS_NO_MEMORY; goto done; } for (i=0; i<*num_entries; i++) { fstrcpy((*info)[i].acct_name, aliases[i].account_name); fstrcpy((*info)[i].acct_desc, aliases[i].description); (*info)[i].rid = aliases[i].rid; } result = NT_STATUS_OK; done: pdb_search_destroy(search); return result; }
static bool search_maxrid(struct pdb_search *search, const char *type, uint32 *max_rid) { struct samr_displayentry *entries; uint32 i, num_entries; if (search == NULL) { d_fprintf(stderr, _("get_maxrid: Could not search %s\n"), type); return false; } num_entries = pdb_search_entries(search, 0, 0xffffffff, &entries); for (i=0; i<num_entries; i++) *max_rid = MAX(*max_rid, entries[i].rid); TALLOC_FREE(search); return true; }
static BOOL search_maxrid(struct pdb_search *search, const char *type, uint32 *max_rid) { struct samr_displayentry *entries; uint32 i, num_entries; if (search == NULL) { d_fprintf(stderr, "get_maxrid: Could not search %s\n", type); return False; } num_entries = pdb_search_entries(search, 0, 0xffffffff, &entries); for (i=0; i<num_entries; i++) *max_rid = MAX(*max_rid, entries[i].rid); pdb_search_destroy(search); return True; }
static NTSTATUS enum_groups_internal(struct winbindd_domain *domain, TALLOC_CTX *mem_ctx, uint32 *num_entries, struct acct_info **info, enum lsa_SidType sidtype) { struct pdb_search *search; struct samr_displayentry *entries; int i; NTSTATUS result = NT_STATUS_UNSUCCESSFUL; if (sidtype == SID_NAME_ALIAS) { search = pdb_search_aliases(&domain->sid); } else { search = pdb_search_groups(); } if (search == NULL) goto done; *num_entries = pdb_search_entries(search, 0, 0xffffffff, &entries); if (*num_entries == 0) { /* Zero entries isn't an error */ result = NT_STATUS_OK; goto done; } *info = TALLOC_ARRAY(mem_ctx, struct acct_info, *num_entries); if (*info == NULL) { result = NT_STATUS_NO_MEMORY; goto done; } for (i=0; i<*num_entries; i++) { fstrcpy((*info)[i].acct_name, entries[i].account_name); fstrcpy((*info)[i].acct_desc, entries[i].description); (*info)[i].rid = entries[i].rid; } result = NT_STATUS_OK; done: pdb_search_destroy(search); return result; }