]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
Convert last caller (in winbindd) to rpccli_samr_EnumDomainGroups.
authorGünther Deschner <gd@samba.org>
Wed, 13 Feb 2008 10:08:49 +0000 (11:08 +0100)
committerGünther Deschner <gd@samba.org>
Wed, 13 Feb 2008 10:18:36 +0000 (11:18 +0100)
Guenther

source/winbindd/winbindd_rpc.c

index 8136175efec59b491a7f59a2940ca39126f8d13d..53928225fad2696924d81b0f0555800dce4c8299 100644 (file)
@@ -150,19 +150,22 @@ static NTSTATUS enum_dom_groups(struct winbindd_domain *domain,
                return status;
 
        do {
-               struct acct_info *info2 = NULL;
+               struct samr_SamArray *sam_array = NULL;
                uint32 count = 0;
                TALLOC_CTX *mem_ctx2;
+               int g;
 
                mem_ctx2 = talloc_init("enum_dom_groups[rpc]");
 
                /* start is updated by this call. */
-               status = rpccli_samr_enum_dom_groups(cli, mem_ctx2, &dom_pol,
-                                                    &start,
-                                                    0xFFFF, /* buffer size? */
-                                                    &info2, &count);
+               status = rpccli_samr_EnumDomainGroups(cli, mem_ctx2,
+                                                     &dom_pol,
+                                                     &start,
+                                                     &sam_array,
+                                                     0xFFFF, /* buffer size? */
+                                                     &count);
 
-               if (!NT_STATUS_IS_OK(status) && 
+               if (!NT_STATUS_IS_OK(status) &&
                    !NT_STATUS_EQUAL(status, STATUS_MORE_ENTRIES)) {
                        talloc_destroy(mem_ctx2);
                        break;
@@ -176,7 +179,13 @@ static NTSTATUS enum_dom_groups(struct winbindd_domain *domain,
                        return NT_STATUS_NO_MEMORY;
                }
 
-               memcpy(&(*info)[*num_entries], info2, count*sizeof(*info2));
+               for (g=0; g < count; g++) {
+
+                       fstrcpy((*info)[*num_entries + g].acct_name,
+                               sam_array->entries[g].name.string);
+                       (*info)[*num_entries + g].rid = sam_array->entries[g].idx;
+               }
+
                (*num_entries) += count;
                talloc_destroy(mem_ctx2);
        } while (NT_STATUS_EQUAL(status, STATUS_MORE_ENTRIES));