diff --git a/source/include/rpc_samr.h b/source/include/rpc_samr.h index 086f61e8c68..732149574b2 100644 --- a/source/include/rpc_samr.h +++ b/source/include/rpc_samr.h @@ -688,45 +688,6 @@ typedef struct r_samr_query_user_info } SAMR_R_QUERY_USERINFO; -/**************************************************************************** -SAMR_Q_LOOKUP_NAMES - do a conversion from Names to RIDs+types. -*****************************************************************************/ -/* SAMR_Q_LOOKUP_NAMES */ -typedef struct q_samr_lookup_names_info -{ - POLICY_HND pol; /* policy handle */ - - uint32 num_names1; /* number of names being looked up */ - uint32 flags; /* 0x0000 03e8 - unknown */ - uint32 ptr; /* 0x0000 0000 - 32 bit unknown */ - uint32 num_names2; /* number of names being looked up */ - - UNIHDR *hdr_name; /* unicode account name header */ - UNISTR2 *uni_name; /* unicode account name string */ - -} SAMR_Q_LOOKUP_NAMES; - - -/* SAMR_R_LOOKUP_NAMES */ -typedef struct r_samr_lookup_names_info -{ - uint32 num_rids1; /* number of aliases being looked up */ - uint32 ptr_rids; /* pointer to aliases */ - uint32 num_rids2; /* number of aliases being looked up */ - - uint32 *rids; /* rids */ - - uint32 num_types1; /* number of users in aliases being looked up */ - uint32 ptr_types; /* pointer to users in aliases */ - uint32 num_types2; /* number of users in aliases being looked up */ - - uint32 *types; /* SID_ENUM type */ - - NTSTATUS status; /* return code */ - -} SAMR_R_LOOKUP_NAMES; - - /**************************************************************************** SAMR_Q_LOOKUP_RIDS - do a conversion from RID groups to something. diff --git a/source/rpc_client/cli_samr.c b/source/rpc_client/cli_samr.c index ea25ddfe52b..54bfafee7d6 100644 --- a/source/rpc_client/cli_samr.c +++ b/source/rpc_client/cli_samr.c @@ -586,68 +586,6 @@ NTSTATUS rpccli_samr_lookup_rids(struct rpc_pipe_client *cli, return result; } -/* Lookup names */ - -NTSTATUS rpccli_samr_lookup_names(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, - POLICY_HND *domain_pol, uint32 flags, - uint32 num_names, const char **names, - uint32 *num_rids, uint32 **rids, - uint32 **rid_types) -{ - prs_struct qbuf, rbuf; - SAMR_Q_LOOKUP_NAMES q; - SAMR_R_LOOKUP_NAMES r; - NTSTATUS result = NT_STATUS_UNSUCCESSFUL; - uint32 i; - - DEBUG(10,("cli_samr_lookup_names\n")); - - ZERO_STRUCT(q); - ZERO_STRUCT(r); - - /* Marshall data and send request */ - - init_samr_q_lookup_names(mem_ctx, &q, domain_pol, flags, - num_names, names); - - CLI_DO_RPC(cli, mem_ctx, PI_SAMR, SAMR_LOOKUP_NAMES, - q, r, - qbuf, rbuf, - samr_io_q_lookup_names, - samr_io_r_lookup_names, - NT_STATUS_UNSUCCESSFUL); - - /* Return output parameters */ - - if (!NT_STATUS_IS_OK(result = r.status)) { - goto done; - } - - if (r.num_rids1 == 0) { - *num_rids = 0; - goto done; - } - - *num_rids = r.num_rids1; - *rids = TALLOC_ARRAY(mem_ctx, uint32, r.num_rids1); - *rid_types = TALLOC_ARRAY(mem_ctx, uint32, r.num_rids1); - - if ((*rids == NULL) || (*rid_types == NULL)) { - TALLOC_FREE(*rids); - TALLOC_FREE(*rid_types); - return NT_STATUS_NO_MEMORY; - } - - for (i = 0; i < r.num_rids1; i++) { - (*rids)[i] = r.rids[i]; - (*rid_types)[i] = r.types[i]; - } - - done: - - return result; -} - /* Set userinfo */ NTSTATUS rpccli_samr_set_userinfo(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, diff --git a/source/rpc_parse/parse_samr.c b/source/rpc_parse/parse_samr.c index 09804f14660..80f94988721 100644 --- a/source/rpc_parse/parse_samr.c +++ b/source/rpc_parse/parse_samr.c @@ -1256,235 +1256,6 @@ bool samr_io_r_lookup_rids(const char *desc, SAMR_R_LOOKUP_RIDS * r_u, return True; } -/******************************************************************* -inits a SAMR_Q_LOOKUP_NAMES structure. -********************************************************************/ - -NTSTATUS init_samr_q_lookup_names(TALLOC_CTX *ctx, SAMR_Q_LOOKUP_NAMES * q_u, - POLICY_HND *pol, uint32 flags, - uint32 num_names, const char **name) -{ - uint32 i; - - DEBUG(5, ("init_samr_q_lookup_names\n")); - - q_u->pol = *pol; - - q_u->num_names1 = num_names; - q_u->flags = flags; - q_u->ptr = 0; - q_u->num_names2 = num_names; - - if (num_names) { - if (!(q_u->hdr_name = TALLOC_ZERO_ARRAY(ctx, UNIHDR, num_names))) - return NT_STATUS_NO_MEMORY; - - if (!(q_u->uni_name = TALLOC_ZERO_ARRAY(ctx, UNISTR2, num_names))) - return NT_STATUS_NO_MEMORY; - } else { - q_u->hdr_name = NULL; - q_u->uni_name = NULL; - } - - for (i = 0; i < num_names; i++) { - init_unistr2(&q_u->uni_name[i], name[i], UNI_FLAGS_NONE); /* unicode string for machine account */ - init_uni_hdr(&q_u->hdr_name[i], &q_u->uni_name[i]); /* unicode header for user_name */ - } - - return NT_STATUS_OK; -} - -/******************************************************************* -reads or writes a structure. -********************************************************************/ - -bool samr_io_q_lookup_names(const char *desc, SAMR_Q_LOOKUP_NAMES * q_u, - prs_struct *ps, int depth) -{ - uint32 i; - - if (q_u == NULL) - return False; - - prs_debug(ps, depth, desc, "samr_io_q_lookup_names"); - depth++; - - if (UNMARSHALLING(ps)) - ZERO_STRUCTP(q_u); - - if(!prs_align(ps)) - return False; - - if(!smb_io_pol_hnd("pol", &q_u->pol, ps, depth)) - return False; - - if(!prs_uint32("num_names1", ps, depth, &q_u->num_names1)) - return False; - if(!prs_uint32("flags ", ps, depth, &q_u->flags)) - return False; - if(!prs_uint32("ptr ", ps, depth, &q_u->ptr)) - return False; - if(!prs_uint32("num_names2", ps, depth, &q_u->num_names2)) - return False; - - if (UNMARSHALLING(ps) && (q_u->num_names2 != 0)) { - q_u->hdr_name = PRS_ALLOC_MEM(ps, UNIHDR, q_u->num_names2); - q_u->uni_name = PRS_ALLOC_MEM(ps, UNISTR2, q_u->num_names2); - if (!q_u->hdr_name || !q_u->uni_name) - return False; - } - - for (i = 0; i < q_u->num_names2; i++) { - if(!smb_io_unihdr("", &q_u->hdr_name[i], ps, depth)) - return False; - } - - for (i = 0; i < q_u->num_names2; i++) { - if(!smb_io_unistr2("", &q_u->uni_name[i], q_u->hdr_name[i].buffer, ps, depth)) - return False; - } - - return True; -} - -/******************************************************************* -inits a SAMR_R_LOOKUP_NAMES structure. -********************************************************************/ - -NTSTATUS init_samr_r_lookup_names(TALLOC_CTX *ctx, SAMR_R_LOOKUP_NAMES * r_u, - uint32 num_rids, - uint32 *rid, enum lsa_SidType *type, - NTSTATUS status) -{ - DEBUG(5, ("init_samr_r_lookup_names\n")); - - if (NT_STATUS_IS_OK(status) && (num_rids != 0)) { - uint32 i; - - r_u->num_types1 = num_rids; - r_u->ptr_types = 1; - r_u->num_types2 = num_rids; - - r_u->num_rids1 = num_rids; - r_u->ptr_rids = 1; - r_u->num_rids2 = num_rids; - - if (!(r_u->rids = TALLOC_ZERO_ARRAY(ctx, uint32, num_rids))) - return NT_STATUS_NO_MEMORY; - if (!(r_u->types = TALLOC_ZERO_ARRAY(ctx, uint32, num_rids))) - return NT_STATUS_NO_MEMORY; - - for (i = 0; i < num_rids; i++) { - r_u->rids[i] = rid[i]; - r_u->types[i] = type[i]; - } - } else { - - r_u->num_types1 = 0; - r_u->ptr_types = 0; - r_u->num_types2 = 0; - - r_u->num_rids1 = 0; - r_u->ptr_rids = 0; - r_u->num_rids2 = 0; - - r_u->rids = NULL; - r_u->types = NULL; - } - - r_u->status = status; - - return NT_STATUS_OK; -} - -/******************************************************************* -reads or writes a structure. -********************************************************************/ - -bool samr_io_r_lookup_names(const char *desc, SAMR_R_LOOKUP_NAMES * r_u, - prs_struct *ps, int depth) -{ - uint32 i; - fstring tmp; - - if (r_u == NULL) - return False; - - prs_debug(ps, depth, desc, "samr_io_r_lookup_names"); - depth++; - - if (UNMARSHALLING(ps)) - ZERO_STRUCTP(r_u); - - if(!prs_align(ps)) - return False; - - if(!prs_uint32("num_rids1", ps, depth, &r_u->num_rids1)) - return False; - if(!prs_uint32("ptr_rids ", ps, depth, &r_u->ptr_rids)) - return False; - - if (r_u->ptr_rids != 0) { - if(!prs_uint32("num_rids2", ps, depth, &r_u->num_rids2)) - return False; - - if (r_u->num_rids2 != r_u->num_rids1) { - /* RPC fault */ - return False; - } - - if (UNMARSHALLING(ps) && r_u->num_rids2) { - r_u->rids = PRS_ALLOC_MEM(ps, uint32, r_u->num_rids2); - - if (!r_u->rids) { - DEBUG(0, ("NULL rids in samr_io_r_lookup_names\n")); - return False; - } - } - - for (i = 0; i < r_u->num_rids2; i++) { - slprintf(tmp, sizeof(tmp) - 1, "rid[%02d] ", i); - if(!prs_uint32(tmp, ps, depth, &r_u->rids[i])) - return False; - } - } - - if(!prs_uint32("num_types1", ps, depth, &r_u->num_types1)) - return False; - if(!prs_uint32("ptr_types ", ps, depth, &r_u->ptr_types)) - return False; - - if (r_u->ptr_types != 0) { - if(!prs_uint32("num_types2", ps, depth, &r_u->num_types2)) - return False; - - if (r_u->num_types2 != r_u->num_types1) { - /* RPC fault */ - return False; - } - - if (UNMARSHALLING(ps) && r_u->num_types2) { - r_u->types = PRS_ALLOC_MEM(ps, uint32, r_u->num_types2); - - if (!r_u->types) { - DEBUG(0, ("NULL types in samr_io_r_lookup_names\n")); - return False; - } - } - - for (i = 0; i < r_u->num_types2; i++) { - slprintf(tmp, sizeof(tmp) - 1, "type[%02d] ", i); - if(!prs_uint32(tmp, ps, depth, &r_u->types[i])) - return False; - } - } - - if(!prs_ntstatus("status", ps, depth, &r_u->status)) - return False; - - return True; -} - /******************************************************************* inits a SAMR_Q_QUERY_USERINFO structure. ********************************************************************/