mirror of
https://github.com/samba-team/samba.git
synced 2025-03-27 22:50:26 +03:00
s3:winbindd: use struct unixid instead of uint64 in Sids2Xids parent<->child
This implicitly also hands the type of the resulting unix-id that the idmap backend has created back to the caller. This is important for backends that would set a broader type than the requested one, e.g. rid backend returning BOTH instead of UID or GID. Signed-off-by: Michael Adam <obnox@samba.org> Reviewed-by: Stefan Metzmacher <metze@samba.org>
This commit is contained in:
parent
da8d026380
commit
28e7d73bdc
@ -53,7 +53,7 @@ interface wbint
|
||||
id_type type;
|
||||
uint32 domain_index;
|
||||
uint32 rid;
|
||||
hyper unix_id;
|
||||
unixid xid;
|
||||
} wbint_TransID;
|
||||
|
||||
typedef struct {
|
||||
|
@ -169,7 +169,8 @@ static void wb_sids2xids_lookupsids_done(struct tevent_req *subreq)
|
||||
t->type = lsa_SidType_to_id_type(n->sid_type);
|
||||
t->domain_index = n->sid_index;
|
||||
sid_peek_rid(&state->non_cached[i], &t->rid);
|
||||
t->unix_id = (uint64_t)-1;
|
||||
t->xid.id = UINT32_MAX;
|
||||
t->xid.type = t->type;
|
||||
}
|
||||
|
||||
child = idmap_child();
|
||||
@ -246,8 +247,7 @@ NTSTATUS wb_sids2xids_recv(struct tevent_req *req,
|
||||
if (state->cached[i].sid != NULL) {
|
||||
xid = state->cached[i].xid;
|
||||
} else {
|
||||
xid.id = state->ids.ids[num_non_cached].unix_id;
|
||||
xid.type = state->ids.ids[num_non_cached].type;
|
||||
xid = state->ids.ids[num_non_cached].xid;
|
||||
|
||||
idmap_cache_set_sid2unixid(
|
||||
&state->non_cached[num_non_cached],
|
||||
|
@ -222,9 +222,12 @@ NTSTATUS _wbint_Sids2UnixIDs(struct pipes_struct *p,
|
||||
struct wbint_TransID *id = &r->in.ids->ids[id_idx[j]];
|
||||
|
||||
if (ids[j].status != ID_MAPPED) {
|
||||
id->xid.id = UINT32_MAX;
|
||||
id->xid.type = ID_TYPE_NOT_SPECIFIED;
|
||||
continue;
|
||||
}
|
||||
id->unix_id = ids[j].xid.id;
|
||||
|
||||
id->xid = ids[j].xid;
|
||||
}
|
||||
}
|
||||
status = NT_STATUS_OK;
|
||||
|
Loading…
x
Reference in New Issue
Block a user