summaryrefslogtreecommitdiff
path: root/source3/rpc_server/srv_lsa.c
diff options
context:
space:
mode:
Diffstat (limited to 'source3/rpc_server/srv_lsa.c')
-rw-r--r--source3/rpc_server/srv_lsa.c34
1 files changed, 19 insertions, 15 deletions
diff --git a/source3/rpc_server/srv_lsa.c b/source3/rpc_server/srv_lsa.c
index 51b6e8d25b..8c9db172d2 100644
--- a/source3/rpc_server/srv_lsa.c
+++ b/source3/rpc_server/srv_lsa.c
@@ -85,6 +85,7 @@ make_dom_query
***************************************************************************/
static void make_dom_query(DOM_QUERY *d_q, char *dom_name, DOM_SID *dom_sid)
{
+ fstring sid_str;
int domlen = strlen(dom_name);
d_q->uni_dom_max_len = domlen * 2;
@@ -96,6 +97,7 @@ static void make_dom_query(DOM_QUERY *d_q, char *dom_name, DOM_SID *dom_sid)
/* this string is supposed to be character short */
make_unistr2(&(d_q->uni_domain_name), dom_name, domlen);
+ sid_to_string(sid_str, dom_sid);
make_dom_sid2(&(d_q->dom_sid), dom_sid);
}
@@ -197,8 +199,8 @@ make_reply_lookup_rids
***************************************************************************/
static void make_reply_lookup_rids(LSA_R_LOOKUP_RIDS *r_l,
int num_entries,
- uint32 dom_rids[MAX_LOOKUP_SIDS],
- uint8 dom_types[MAX_LOOKUP_SIDS])
+ DOM_SID dom_sids [MAX_LOOKUP_SIDS],
+ uint8 dom_types[MAX_LOOKUP_SIDS])
{
int i;
@@ -215,8 +217,11 @@ static void make_reply_lookup_rids(LSA_R_LOOKUP_RIDS *r_l,
for (i = 0; i < num_entries; i++)
{
+ DOM_SID sid = dom_sids[i];
+ uint32 rid;
+ sid_split_rid(&sid, &rid);
make_dom_ref(&(r_l->dom_ref), dom_name, dom_sid);
- make_dom_rid2(&(r_l->dom_rid[i]), dom_rids[i], dom_types[i]);
+ make_dom_rid2(&(r_l->dom_rid[i]), rid, dom_types[i]);
}
r_l->num_entries3 = num_entries;
@@ -241,7 +246,7 @@ static void make_lsa_trans_names(DOM_R_REF *ref,
{
uint32 status = 0x0;
DOM_SID find_sid = sid[i].sid;
- DOM_SID tmp = sid[i].sid;
+ DOM_SID tmp_sid = sid[i].sid;
uint32 rid = 0xffffffff;
int dom_idx = -1;
fstring name;
@@ -261,7 +266,7 @@ static void make_lsa_trans_names(DOM_R_REF *ref,
{
if (sid_equal(&find_sid, &global_sam_sid))
{
- status = lookup_name(&tmp, name, &sid_name_use);
+ status = lookup_sid(&tmp_sid, name, &sid_name_use);
}
else
{
@@ -337,15 +342,15 @@ lsa_reply_lookup_rids
***************************************************************************/
static void lsa_reply_lookup_rids(prs_struct *rdata,
int num_entries,
- uint32 dom_rids[MAX_LOOKUP_SIDS],
- uint8 dom_types[MAX_LOOKUP_SIDS])
+ DOM_SID dom_sids [MAX_LOOKUP_SIDS],
+ uint8 dom_types[MAX_LOOKUP_SIDS])
{
LSA_R_LOOKUP_RIDS r_l;
ZERO_STRUCT(r_l);
/* set up the LSA Lookup RIDs response */
- make_reply_lookup_rids(&r_l, num_entries, dom_rids, dom_types);
+ make_reply_lookup_rids(&r_l, num_entries, dom_sids, dom_types);
r_l.status = 0x0;
@@ -474,11 +479,11 @@ static void api_lsa_lookup_names( uint16 vuid, prs_struct *data,
{
int i;
LSA_Q_LOOKUP_RIDS q_l;
- uint32 dom_rids[MAX_LOOKUP_SIDS];
- uint8 dom_types[MAX_LOOKUP_SIDS];
+ DOM_SID dom_sids [MAX_LOOKUP_SIDS];
+ uint8 dom_types[MAX_LOOKUP_SIDS];
ZERO_STRUCT(q_l);
- ZERO_ARRAY(dom_rids);
+ ZERO_ARRAY(dom_sids);
/* grab the info class and policy handle */
lsa_io_q_lookup_rids("", &q_l, data, 0);
@@ -491,17 +496,16 @@ static void api_lsa_lookup_names( uint16 vuid, prs_struct *data,
fstring name;
fstrcpy(name, unistr2(q_l.lookup_name[i].str.buffer));
- if (lookup_rid(name, &dom_rids[i], &dom_types[i]))
+ if (!lookup_name(name, &dom_sids[i], &dom_types[i]))
{
- /* WHOOPS! we should really do something about this... */
- dom_rids[i] = 0;
+ dom_types[i] = SID_NAME_UNKNOWN;
}
}
/* construct reply. return status is always 0x0 */
lsa_reply_lookup_rids(rdata,
q_l.num_entries,
- dom_rids, /* text-converted SIDs */
+ dom_sids, /* text-converted SIDs */
dom_types); /* SID_NAME_USE types */
}