]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
Use rpccli_samr_EnumDomainUsers in net and rpcclient.
authorGünther Deschner <gd@samba.org>
Tue, 12 Feb 2008 10:36:33 +0000 (11:36 +0100)
committerGünther Deschner <gd@samba.org>
Tue, 12 Feb 2008 10:36:33 +0000 (11:36 +0100)
Guenther

source/rpcclient/cmd_samr.c
source/utils/net_rpc.c

index 3d6866e57edd3f52d2d7c199597fc166a9ffeb09..c644c156ef7cf303da8e7a374f5a622ae7b6f61d 100644 (file)
@@ -818,8 +818,7 @@ static NTSTATUS cmd_samr_enum_dom_users(struct rpc_pipe_client *cli,
        POLICY_HND connect_pol, domain_pol;
        NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
        uint32 start_idx, size, num_dom_users, i;
-       char **dom_users;
-       uint32 *dom_rids;
+       struct samr_SamArray *dom_users = NULL;
        uint32 access_mask = MAXIMUM_ALLOWED_ACCESS;
        uint32 acb_mask = ACB_NORMAL;
        bool got_connect_pol = False, got_domain_pol = False;
@@ -864,16 +863,21 @@ static NTSTATUS cmd_samr_enum_dom_users(struct rpc_pipe_client *cli,
        size = 0xffff;
 
        do {
-               result = rpccli_samr_enum_dom_users(
-                       cli, mem_ctx, &domain_pol, &start_idx, acb_mask,
-                       size, &dom_users, &dom_rids, &num_dom_users);
+               result = rpccli_samr_EnumDomainUsers(cli, mem_ctx,
+                                                    &domain_pol,
+                                                    &start_idx,
+                                                    acb_mask,
+                                                    &dom_users,
+                                                    size,
+                                                    &num_dom_users);
 
                if (NT_STATUS_IS_OK(result) ||
                    NT_STATUS_V(result) == NT_STATUS_V(STATUS_MORE_ENTRIES)) {
 
                        for (i = 0; i < num_dom_users; i++)
                                printf("user:[%s] rid:[0x%x]\n",
-                                      dom_users[i], dom_rids[i]);
+                                      dom_users->entries[i].name.string,
+                                      dom_users->entries[i].idx);
                }
 
        } while (NT_STATUS_V(result) == NT_STATUS_V(STATUS_MORE_ENTRIES));
@@ -2553,7 +2557,7 @@ struct cmd_set samr_commands[] = {
        { "deletealias",        RPC_RTYPE_NTSTATUS, cmd_samr_delete_alias,      NULL, PI_SAMR, NULL,    "Delete an alias",  "" },
        { "querydispinfo",      RPC_RTYPE_NTSTATUS, cmd_samr_query_dispinfo,    NULL, PI_SAMR, NULL,    "Query display info",      "" },
        { "querydominfo",       RPC_RTYPE_NTSTATUS, cmd_samr_query_dominfo,     NULL, PI_SAMR, NULL,    "Query domain info",       "" },
-       { "enumdomusers",      RPC_RTYPE_NTSTATUS, cmd_samr_enum_dom_users,       NULL, PI_SAMR, NULL,  "Enumerate domain users", "" },
+       { "enumdomusers",       RPC_RTYPE_NTSTATUS, cmd_samr_enum_dom_users,       NULL, PI_SAMR, NULL, "Enumerate domain users", "" },
        { "enumdomgroups",      RPC_RTYPE_NTSTATUS, cmd_samr_enum_dom_groups,       NULL, PI_SAMR, NULL,        "Enumerate domain groups", "" },
        { "enumalsgroups",      RPC_RTYPE_NTSTATUS, cmd_samr_enum_als_groups,       NULL, PI_SAMR, NULL,        "Enumerate alias groups",  "" },
        { "enumdomains",        RPC_RTYPE_NTSTATUS, cmd_samr_enum_domains,          NULL, PI_SAMR, NULL,        "Enumerate domains",  "" },
index 959395c2947a5ce3c7abdafffcecfa221e7bbb69..403cb19f848d29a9a723e29746a297b213df933c 100644 (file)
@@ -6345,9 +6345,8 @@ static int rpc_trustdom_list(int argc, const char **argv)
 
        /* trusting domains listing variables */
        POLICY_HND domain_hnd;
-       char **trusting_dom_names;
-       uint32 *trusting_dom_rids;
-       
+       struct samr_SamArray *trusts = NULL;
+
        /*
         * Listing trusted domains (stored in secrets.tdb, if local)
         */
@@ -6507,11 +6506,14 @@ static int rpc_trustdom_list(int argc, const char **argv)
         
        enum_ctx = 0;   /* reset enumeration context from last enumeration */
        do {
-                       
-               nt_status = rpccli_samr_enum_dom_users(pipe_hnd, mem_ctx, &domain_hnd,
-                                                   &enum_ctx, ACB_DOMTRUST, 0xffff,
-                                                   &trusting_dom_names, &trusting_dom_rids,
-                                                   &num_domains);
+
+               nt_status = rpccli_samr_EnumDomainUsers(pipe_hnd, mem_ctx,
+                                                       &domain_hnd,
+                                                       &enum_ctx,
+                                                       ACB_DOMTRUST,
+                                                       &trusts,
+                                                       0xffff,
+                                                       &num_domains);
                if (NT_STATUS_IS_ERR(nt_status)) {
                        DEBUG(0, ("Couldn't enumerate accounts. Error was: %s\n",
                                nt_errstr(nt_status)));
@@ -6519,9 +6521,11 @@ static int rpc_trustdom_list(int argc, const char **argv)
                        talloc_destroy(mem_ctx);
                        return -1;
                };
-               
+
                for (i = 0; i < num_domains; i++) {
 
+                       char *str = CONST_DISCARD(char *, trusts->entries[i].name.string);
+
                        /*
                         * get each single domain's sid (do we _really_ need this ?):
                         *  1) connect to domain's pdc
@@ -6529,22 +6533,22 @@ static int rpc_trustdom_list(int argc, const char **argv)
                         */
 
                        /* get rid of '$' tail */
-                       ascii_dom_name_len = strlen(trusting_dom_names[i]);
+                       ascii_dom_name_len = strlen(str);
                        if (ascii_dom_name_len && ascii_dom_name_len < FSTRING_LEN)
-                               trusting_dom_names[i][ascii_dom_name_len - 1] = '\0';
-                       
+                               str[ascii_dom_name_len - 1] = '\0';
+
                        /* calculate padding space for d_printf to look nicer */
-                       pad_len = col_len - strlen(trusting_dom_names[i]);
+                       pad_len = col_len - strlen(str);
                        padding[pad_len] = 0;
                        do padding[--pad_len] = ' '; while (pad_len);
 
                        /* set opt_* variables to remote domain */
-                       strupper_m(trusting_dom_names[i]);
-                       opt_workgroup = talloc_strdup(mem_ctx, trusting_dom_names[i]);
+                       strupper_m(str);
+                       opt_workgroup = talloc_strdup(mem_ctx, str);
                        opt_target_workgroup = opt_workgroup;
-                       
-                       d_printf("%s%s", trusting_dom_names[i], padding);
-                       
+
+                       d_printf("%s%s", str, padding);
+
                        /* connect to remote domain controller */
                        nt_status = net_make_ipc_connection(
                                        NET_FLAGS_PDC | NET_FLAGS_ANONYMOUS,