struct passwd * winbind_getpwsid(const struct dom_sid *sid) { wbcErr result; struct passwd * tmp_pwd = NULL; struct passwd * pwd = NULL; struct wbcDomainSid dom_sid; memcpy(&dom_sid, sid, sizeof(dom_sid)); result = wbcGetpwsid(&dom_sid, &tmp_pwd); if (result != WBC_ERR_SUCCESS) return pwd; pwd = tcopy_passwd(talloc_tos(), tmp_pwd); wbcFreeMemory(tmp_pwd); return pwd; }
static bool wbinfo_get_user_sidinfo(const char *sid_str) { wbcErr wbc_status = WBC_ERR_UNKNOWN_FAILURE; struct passwd *pwd = NULL; struct wbcDomainSid sid; wbc_status = wbcStringToSid(sid_str, &sid); wbc_status = wbcGetpwsid(&sid, &pwd); if (!WBC_ERROR_IS_OK(wbc_status)) { return false; } d_printf("%s:%s:%d:%d:%s:%s:%s\n", pwd->pw_name, pwd->pw_passwd, pwd->pw_uid, pwd->pw_gid, pwd->pw_gecos, pwd->pw_dir, pwd->pw_shell); return true; }