diff options
author | Volker Lendecke <vl@samba.org> | 2016-02-08 17:34:38 +0100 |
---|---|---|
committer | Ralph Boehme <slow@samba.org> | 2016-02-22 20:29:15 +0100 |
commit | 89f753c1fc824fef29aebb7d783ab7e09cd1f04e (patch) | |
tree | d444fccf60e95a9bfac8f1a807b52f573c30e8bd /source3/winbindd/winbindd_getpwuid.c | |
parent | 05aa3406cb0738e094f84b25519a4122ef8d2017 (diff) | |
download | samba-89f753c1fc824fef29aebb7d783ab7e09cd1f04e.tar.gz |
winbind: Use xids2sids in getpwuid
Signed-off-by: Volker Lendecke <vl@samba.org>
Reviewed-by: Ralph Boehme <slow@samba.org>
Diffstat (limited to 'source3/winbindd/winbindd_getpwuid.c')
-rw-r--r-- | source3/winbindd/winbindd_getpwuid.c | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/source3/winbindd/winbindd_getpwuid.c b/source3/winbindd/winbindd_getpwuid.c index 30f3a04efdd..d7a1f4de5e5 100644 --- a/source3/winbindd/winbindd_getpwuid.c +++ b/source3/winbindd/winbindd_getpwuid.c @@ -19,10 +19,12 @@ #include "includes.h" #include "winbindd.h" +#include "libcli/security/dom_sid.h" struct winbindd_getpwuid_state { struct tevent_context *ev; - struct dom_sid sid; + struct unixid xid; + struct dom_sid *sid; struct winbindd_pw pw; }; @@ -46,7 +48,10 @@ struct tevent_req *winbindd_getpwuid_send(TALLOC_CTX *mem_ctx, DEBUG(3, ("getpwuid %d\n", (int)request->data.uid)); - subreq = wb_uid2sid_send(state, ev, request->data.uid); + state->xid = (struct unixid) { + .id = request->data.uid, .type = ID_TYPE_UID }; + + subreq = wb_xids2sids_send(state, ev, &state->xid, 1); if (tevent_req_nomem(subreq, req)) { return tevent_req_post(req, ev); } @@ -63,13 +68,17 @@ static void winbindd_getpwuid_uid2sid_done(struct tevent_req *subreq) req, struct winbindd_getpwuid_state); NTSTATUS status; - status = wb_uid2sid_recv(subreq, &state->sid); + status = wb_xids2sids_recv(subreq, state, &state->sid); TALLOC_FREE(subreq); if (tevent_req_nterror(req, status)) { return; } + if (is_null_sid(state->sid)) { + tevent_req_nterror(req, NT_STATUS_NO_SUCH_USER); + return; + } - subreq = wb_getpwsid_send(state, state->ev, &state->sid, &state->pw); + subreq = wb_getpwsid_send(state, state->ev, state->sid, &state->pw); if (tevent_req_nomem(subreq, req)) { return; } @@ -99,7 +108,7 @@ NTSTATUS winbindd_getpwuid_recv(struct tevent_req *req, if (tevent_req_is_nterror(req, &status)) { DEBUG(5, ("Could not convert sid %s: %s\n", - sid_string_dbg(&state->sid), nt_errstr(status))); + sid_string_dbg(state->sid), nt_errstr(status))); return status; } response->data.pw = state->pw; |