diff options
-rw-r--r-- | source3/include/rpc_samr.h | 34 | ||||
-rw-r--r-- | source3/rpc_client/cli_samr.c | 70 | ||||
-rw-r--r-- | source3/rpc_parse/parse_samr.c | 134 |
3 files changed, 0 insertions, 238 deletions
diff --git a/source3/include/rpc_samr.h b/source3/include/rpc_samr.h index 9b9b4d2e4f..637df60478 100644 --- a/source3/include/rpc_samr.h +++ b/source3/include/rpc_samr.h @@ -160,40 +160,6 @@ typedef struct samr_entry_info } SAM_ENTRY; -/* SAMR_Q_ENUM_DOM_GROUPS - SAM rids and names */ -typedef struct q_samr_enum_dom_groups_info -{ - POLICY_HND pol; /* policy handle */ - - /* this is possibly an enumeration context handle... */ - uint32 start_idx; /* 0x0000 0000 */ - - uint32 max_size; /* 0x0000 ffff */ - -} SAMR_Q_ENUM_DOM_GROUPS; - - -/* SAMR_R_ENUM_DOM_GROUPS - SAM rids and names */ -typedef struct r_samr_enum_dom_groups_info -{ - uint32 next_idx; - uint32 ptr_entries1; - - uint32 num_entries2; - uint32 ptr_entries2; - - uint32 num_entries3; - - SAM_ENTRY *sam; - UNISTR2 *uni_grp_name; - - uint32 num_entries4; - - NTSTATUS status; - -} SAMR_R_ENUM_DOM_GROUPS; - - /* SAMR_Q_ENUM_DOM_ALIASES - SAM rids and names */ typedef struct q_samr_enum_dom_aliases_info { diff --git a/source3/rpc_client/cli_samr.c b/source3/rpc_client/cli_samr.c index a994db95f8..0628dfb755 100644 --- a/source3/rpc_client/cli_samr.c +++ b/source3/rpc_client/cli_samr.c @@ -24,76 +24,6 @@ /* Enumerate domain groups */ -NTSTATUS rpccli_samr_enum_dom_groups(struct rpc_pipe_client *cli, - TALLOC_CTX *mem_ctx, - POLICY_HND *pol, uint32 *start_idx, - uint32 size, struct acct_info **dom_groups, - uint32 *num_dom_groups) -{ - prs_struct qbuf, rbuf; - SAMR_Q_ENUM_DOM_GROUPS q; - SAMR_R_ENUM_DOM_GROUPS r; - NTSTATUS result = NT_STATUS_UNSUCCESSFUL; - uint32 name_idx, i; - - DEBUG(10,("cli_samr_enum_dom_groups starting at index %u\n", (unsigned int)*start_idx)); - - ZERO_STRUCT(q); - ZERO_STRUCT(r); - - /* Marshall data and send request */ - - init_samr_q_enum_dom_groups(&q, pol, *start_idx, size); - - CLI_DO_RPC(cli, mem_ctx, PI_SAMR, SAMR_ENUM_DOM_GROUPS, - q, r, - qbuf, rbuf, - samr_io_q_enum_dom_groups, - samr_io_r_enum_dom_groups, - NT_STATUS_UNSUCCESSFUL); - - /* Return output parameters */ - - result = r.status; - - if (!NT_STATUS_IS_OK(result) && - NT_STATUS_V(result) != NT_STATUS_V(STATUS_MORE_ENTRIES)) - goto done; - - *num_dom_groups = r.num_entries2; - - if (*num_dom_groups == 0) - goto done; - - if (!((*dom_groups) = TALLOC_ARRAY(mem_ctx, struct acct_info, *num_dom_groups))) { - result = NT_STATUS_NO_MEMORY; - goto done; - } - - memset(*dom_groups, 0, sizeof(struct acct_info) * (*num_dom_groups)); - - name_idx = 0; - - for (i = 0; i < *num_dom_groups; i++) { - - (*dom_groups)[i].rid = r.sam[i].rid; - - if (r.sam[i].hdr_name.buffer) { - unistr2_to_ascii((*dom_groups)[i].acct_name, - &r.uni_grp_name[name_idx], - sizeof((*dom_groups)[i].acct_name)); - name_idx++; - } - - *start_idx = r.next_idx; - } - - done: - return result; -} - -/* Enumerate domain groups */ - NTSTATUS rpccli_samr_enum_als_groups(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, POLICY_HND *pol, uint32 *start_idx, diff --git a/source3/rpc_parse/parse_samr.c b/source3/rpc_parse/parse_samr.c index 14b6e2a433..bb98cd1ea6 100644 --- a/source3/rpc_parse/parse_samr.c +++ b/source3/rpc_parse/parse_samr.c @@ -52,140 +52,6 @@ static bool sam_io_sam_entry(const char *desc, SAM_ENTRY * sam, } /******************************************************************* -inits a SAMR_Q_ENUM_DOM_GROUPS structure. -********************************************************************/ - -void init_samr_q_enum_dom_groups(SAMR_Q_ENUM_DOM_GROUPS * q_e, - POLICY_HND *pol, - uint32 start_idx, uint32 size) -{ - DEBUG(5, ("init_samr_q_enum_dom_groups\n")); - - q_e->pol = *pol; - - q_e->start_idx = start_idx; - q_e->max_size = size; -} - -/******************************************************************* -reads or writes a structure. -********************************************************************/ - -bool samr_io_q_enum_dom_groups(const char *desc, SAMR_Q_ENUM_DOM_GROUPS * q_e, - prs_struct *ps, int depth) -{ - if (q_e == NULL) - return False; - - prs_debug(ps, depth, desc, "samr_io_q_enum_dom_groups"); - depth++; - - if(!prs_align(ps)) - return False; - - if(!smb_io_pol_hnd("pol", &(q_e->pol), ps, depth)) - return False; - - if(!prs_uint32("start_idx", ps, depth, &q_e->start_idx)) - return False; - if(!prs_uint32("max_size ", ps, depth, &q_e->max_size)) - return False; - - return True; -} - -/******************************************************************* -inits a SAMR_R_ENUM_DOM_GROUPS structure. -********************************************************************/ - -void init_samr_r_enum_dom_groups(SAMR_R_ENUM_DOM_GROUPS * r_u, - uint32 next_idx, uint32 num_sam_entries) -{ - DEBUG(5, ("init_samr_r_enum_dom_groups\n")); - - r_u->next_idx = next_idx; - - if (num_sam_entries != 0) { - r_u->ptr_entries1 = 1; - r_u->ptr_entries2 = 1; - r_u->num_entries2 = num_sam_entries; - r_u->num_entries3 = num_sam_entries; - - r_u->num_entries4 = num_sam_entries; - } else { - r_u->ptr_entries1 = 0; - r_u->num_entries2 = num_sam_entries; - r_u->ptr_entries2 = 1; - } -} - -/******************************************************************* -reads or writes a structure. -********************************************************************/ - -bool samr_io_r_enum_dom_groups(const char *desc, SAMR_R_ENUM_DOM_GROUPS * r_u, - prs_struct *ps, int depth) -{ - uint32 i; - - if (r_u == NULL) - return False; - - prs_debug(ps, depth, desc, "samr_io_r_enum_dom_groups"); - depth++; - - if(!prs_align(ps)) - return False; - - if(!prs_uint32("next_idx ", ps, depth, &r_u->next_idx)) - return False; - if(!prs_uint32("ptr_entries1", ps, depth, &r_u->ptr_entries1)) - return False; - - if (r_u->ptr_entries1 != 0) { - if(!prs_uint32("num_entries2", ps, depth, &r_u->num_entries2)) - return False; - if(!prs_uint32("ptr_entries2", ps, depth, &r_u->ptr_entries2)) - return False; - if(!prs_uint32("num_entries3", ps, depth, &r_u->num_entries3)) - return False; - - if (UNMARSHALLING(ps) && r_u->num_entries2) { - r_u->sam = PRS_ALLOC_MEM(ps,SAM_ENTRY,r_u->num_entries2); - r_u->uni_grp_name = PRS_ALLOC_MEM(ps,UNISTR2,r_u->num_entries2); - } - - if ((r_u->sam == NULL || r_u->uni_grp_name == NULL) && r_u->num_entries2 != 0) { - DEBUG(0, - ("NULL pointers in SAMR_R_ENUM_DOM_GROUPS\n")); - r_u->num_entries4 = 0; - r_u->status = NT_STATUS_MEMORY_NOT_ALLOCATED; - return False; - } - - for (i = 0; i < r_u->num_entries2; i++) { - if(!sam_io_sam_entry("", &r_u->sam[i], ps, depth)) - return False; - } - - for (i = 0; i < r_u->num_entries2; i++) { - if(!smb_io_unistr2("", &r_u->uni_grp_name[i], - r_u->sam[i].hdr_name.buffer, ps, depth)) - return False; - } - } - - if(!prs_align(ps)) - return False; - if(!prs_uint32("num_entries4", ps, depth, &r_u->num_entries4)) - return False; - if(!prs_ntstatus("status", ps, depth, &r_u->status)) - return False; - - return True; -} - -/******************************************************************* inits a SAMR_Q_ENUM_DOM_ALIASES structure. ********************************************************************/ |