From fdfe993f2eb3c1cce57e86c4a9cd6990b95bd904 Mon Sep 17 00:00:00 2001 From: Volker Lendecke Date: Fri, 4 Mar 2016 15:45:24 +0100 Subject: [PATCH] winbind: Use plural xids2sids in _wbint_UnixIDs2Sids We've had plural xid2sid idmap backends for a while. Start using them. Signed-off-by: Volker Lendecke Reviewed-by: Jeremy Allison --- source3/winbindd/winbindd_dual_srv.c | 38 +++++++++++++++------------- 1 file changed, 20 insertions(+), 18 deletions(-) diff --git a/source3/winbindd/winbindd_dual_srv.c b/source3/winbindd/winbindd_dual_srv.c index 7c415e68f83..fb65e9d1c30 100644 --- a/source3/winbindd/winbindd_dual_srv.c +++ b/source3/winbindd/winbindd_dual_srv.c @@ -208,30 +208,32 @@ done: NTSTATUS _wbint_UnixIDs2Sids(struct pipes_struct *p, struct wbint_UnixIDs2Sids *r) { + struct id_map **maps; + NTSTATUS status; uint32_t i; + maps = id_map_ptrs_init(talloc_tos(), r->in.num_ids); + if (maps == NULL) { + return NT_STATUS_NO_MEMORY; + } + for (i=0; iin.num_ids; i++) { - struct unixid *xid = &r->in.xids[i]; - struct dom_sid *sid = &r->out.sids[i]; - NTSTATUS status; - - switch (xid->type) { - case ID_TYPE_UID: - status = idmap_uid_to_sid(sid, xid->id); - break; - case ID_TYPE_GID: - status = idmap_gid_to_sid(sid, xid->id); - break; - default: - status = NT_STATUS_NONE_MAPPED; - break; - } + maps[i]->status = ID_UNKNOWN; + maps[i]->xid = r->in.xids[i]; + } - if (!NT_STATUS_IS_OK(status)) { - *sid = (struct dom_sid) {0}; - } + status = idmap_backend_unixids_to_sids(maps, r->in.domain_name); + if (!NT_STATUS_IS_OK(status)) { + TALLOC_FREE(maps); + return status; } + for (i=0; iin.num_ids; i++) { + sid_copy(&r->out.sids[i], maps[i]->sid); + } + + TALLOC_FREE(maps); + return NT_STATUS_OK; } -- 2.47.3