diff options
author | Michael Adam <obnox@samba.org> | 2012-11-18 13:51:13 +0100 |
---|---|---|
committer | Stefan Metzmacher <metze@samba.org> | 2012-12-03 08:48:22 +0100 |
commit | 28e7d73bdcdf1a3d588e92eee982ff01db53d65d (patch) | |
tree | 2ed0ec82b779cedb857bbe276c46675e9944af28 /source3 | |
parent | da8d0263806260fdb4973f22fc874710bd490421 (diff) | |
download | samba-28e7d73bdcdf1a3d588e92eee982ff01db53d65d.tar.gz samba-28e7d73bdcdf1a3d588e92eee982ff01db53d65d.tar.bz2 samba-28e7d73bdcdf1a3d588e92eee982ff01db53d65d.zip |
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>
Diffstat (limited to 'source3')
-rw-r--r-- | source3/librpc/idl/wbint.idl | 2 | ||||
-rw-r--r-- | source3/winbindd/wb_sids2xids.c | 6 | ||||
-rw-r--r-- | source3/winbindd/winbindd_dual_srv.c | 5 |
3 files changed, 8 insertions, 5 deletions
diff --git a/source3/librpc/idl/wbint.idl b/source3/librpc/idl/wbint.idl index 159af76a82..c836f0faf2 100644 --- a/source3/librpc/idl/wbint.idl +++ b/source3/librpc/idl/wbint.idl @@ -53,7 +53,7 @@ interface wbint id_type type; uint32 domain_index; uint32 rid; - hyper unix_id; + unixid xid; } wbint_TransID; typedef struct { diff --git a/source3/winbindd/wb_sids2xids.c b/source3/winbindd/wb_sids2xids.c index 7a198c18ce..cbd4444566 100644 --- a/source3/winbindd/wb_sids2xids.c +++ b/source3/winbindd/wb_sids2xids.c @@ -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], diff --git a/source3/winbindd/winbindd_dual_srv.c b/source3/winbindd/winbindd_dual_srv.c index 9fb29115cd..35d9451177 100644 --- a/source3/winbindd/winbindd_dual_srv.c +++ b/source3/winbindd/winbindd_dual_srv.c @@ -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; |