+static void ndr_child_lookup_sid2userinfo(struct winbindd_domain *domain,
+ struct winbindd_cli_state *state,
+ struct winbind_lookup *r)
+{
+ NTSTATUS status;
+ WINBIND_USERINFO user_info;
+
+ DEBUG(3, ("lookup sid2userinfo user:%s\n",
+ sid_string_dbg(r->in.req.sid)));
+
+
+ status = domain->methods->query_user(domain, state->mem_ctx,
+ r->in.req.sid, &user_info);
+ if (!NT_STATUS_IS_OK(status)) {
+ DEBUG(1, ("error getting user info for sid %s: %s\n",
+ sid_string_dbg(r->in.req.sid), nt_errstr(status)));
+ r->out.result = WINBIND_STATUS_FOOBAR;
+ return;
+ }
+
+ r->out.rep->user_info.account = user_info.acct_name;
+ r->out.rep->user_info.gecos = user_info.full_name;
+ r->out.rep->user_info.homedir = user_info.homedir;
+ r->out.rep->user_info.shell = user_info.shell;
+ r->out.rep->user_info.primary_gid = user_info.primary_gid;
+
+ if (!sid_peek_check_rid(&domain->sid, &user_info.group_sid,
+ &r->out.rep->user_info.primary_rid)) {
+ DEBUG(1, ("Could not extract group rid out of %s\n",
+ sid_string_dbg(&user_info.group_sid)));
+ r->out.result = WINBIND_STATUS_FOOBAR;
+ return;
+ }
+
+ r->out.result = WINBIND_STATUS_OK;
+}
+
+