mirror of
https://github.com/samba-team/samba.git
synced 2025-02-03 13:47:25 +03:00
s3:winbind: WINBIND_USERINFO -> wbint_userinfo
This commit is contained in:
parent
6d100a6b20
commit
c6b36ce573
@ -25,7 +25,7 @@ struct wb_getpwsid_state {
|
||||
struct winbindd_domain *user_domain;
|
||||
struct tevent_context *ev;
|
||||
struct dom_sid sid;
|
||||
struct winbind_userinfo *userinfo;
|
||||
struct wbint_userinfo *userinfo;
|
||||
struct winbindd_pw *pw;
|
||||
};
|
||||
|
||||
|
@ -23,7 +23,7 @@
|
||||
|
||||
struct wb_queryuser_state {
|
||||
struct dom_sid sid;
|
||||
struct wbint_userinfo info;
|
||||
struct wbint_userinfo *info;
|
||||
};
|
||||
|
||||
static void wb_queryuser_done(struct tevent_req *subreq);
|
||||
@ -35,7 +35,6 @@ struct tevent_req *wb_queryuser_send(TALLOC_CTX *mem_ctx,
|
||||
struct tevent_req *req, *subreq;
|
||||
struct wb_queryuser_state *state;
|
||||
struct winbindd_domain *domain;
|
||||
struct winbind_userinfo info;
|
||||
NTSTATUS status;
|
||||
|
||||
req = tevent_req_create(mem_ctx, &state, struct wb_queryuser_state);
|
||||
@ -50,21 +49,19 @@ struct tevent_req *wb_queryuser_send(TALLOC_CTX *mem_ctx,
|
||||
return tevent_req_post(req, ev);
|
||||
}
|
||||
|
||||
status = wcache_query_user(domain, state, &state->sid, &info);
|
||||
state->info = talloc(state, struct wbint_userinfo);
|
||||
if (tevent_req_nomem(state->info, req)) {
|
||||
return tevent_req_post(req, ev);
|
||||
}
|
||||
|
||||
status = wcache_query_user(domain, state, &state->sid, state->info);
|
||||
if (NT_STATUS_IS_OK(status)) {
|
||||
state->info.acct_name = info.acct_name;
|
||||
state->info.full_name = info.full_name;
|
||||
state->info.homedir = info.homedir;
|
||||
state->info.shell = info.shell;
|
||||
state->info.primary_gid = info.primary_gid;
|
||||
sid_copy(&state->info.user_sid, &info.user_sid);
|
||||
sid_copy(&state->info.group_sid, &info.group_sid);
|
||||
tevent_req_done(req);
|
||||
return tevent_req_post(req, ev);
|
||||
}
|
||||
|
||||
subreq = rpccli_wbint_QueryUser_send(state, ev, domain->child.rpccli,
|
||||
&state->sid, &state->info);
|
||||
&state->sid, state->info);
|
||||
if (tevent_req_nomem(subreq, req)) {
|
||||
return tevent_req_post(req, ev);
|
||||
}
|
||||
@ -94,28 +91,15 @@ static void wb_queryuser_done(struct tevent_req *subreq)
|
||||
}
|
||||
|
||||
NTSTATUS wb_queryuser_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx,
|
||||
struct winbind_userinfo **pinfo)
|
||||
struct wbint_userinfo **pinfo)
|
||||
{
|
||||
struct wb_queryuser_state *state = tevent_req_data(
|
||||
req, struct wb_queryuser_state);
|
||||
struct winbind_userinfo *info;
|
||||
NTSTATUS status;
|
||||
|
||||
if (tevent_req_is_nterror(req, &status)) {
|
||||
return status;
|
||||
}
|
||||
|
||||
info = talloc(mem_ctx, struct winbind_userinfo);
|
||||
if (info == NULL) {
|
||||
return NT_STATUS_NO_MEMORY;
|
||||
}
|
||||
info->acct_name = talloc_move(info, &state->info.acct_name);
|
||||
info->full_name = talloc_move(info, &state->info.full_name);
|
||||
info->homedir = talloc_move(info, &state->info.homedir);
|
||||
info->shell = talloc_move(info, &state->info.shell);
|
||||
info->primary_gid = state->info.primary_gid;
|
||||
sid_copy(&info->user_sid, &state->info.user_sid);
|
||||
sid_copy(&info->group_sid, &state->info.group_sid);
|
||||
*pinfo = info;
|
||||
*pinfo = talloc_move(mem_ctx, &state->info);
|
||||
return NT_STATUS_OK;
|
||||
}
|
||||
|
@ -25,6 +25,7 @@
|
||||
|
||||
#include "nsswitch/winbind_struct_protocol.h"
|
||||
#include "nsswitch/libwbclient/wbclient.h"
|
||||
#include "librpc/gen_ndr/wbint.h"
|
||||
|
||||
#ifdef HAVE_LIBNSCD
|
||||
#include <libnscd.h>
|
||||
@ -89,19 +90,6 @@ struct getpwent_user {
|
||||
DOM_SID group_sid;
|
||||
};
|
||||
|
||||
/* Server state structure */
|
||||
|
||||
typedef struct winbind_userinfo {
|
||||
const char *acct_name;
|
||||
const char *full_name;
|
||||
const char *homedir;
|
||||
const char *shell;
|
||||
gid_t primary_gid; /* allow the nss_info
|
||||
backend to set the primary group */
|
||||
DOM_SID user_sid; /* NT user and primary group SIDs */
|
||||
DOM_SID group_sid;
|
||||
} WINBIND_USERINFO;
|
||||
|
||||
/* Our connection to the DC */
|
||||
|
||||
struct winbindd_cm_conn {
|
||||
@ -227,11 +215,11 @@ struct winbindd_methods {
|
||||
always correct) */
|
||||
bool consistent;
|
||||
|
||||
/* get a list of users, returning a WINBIND_USERINFO for each one */
|
||||
/* get a list of users, returning a wbint_userinfo for each one */
|
||||
NTSTATUS (*query_user_list)(struct winbindd_domain *domain,
|
||||
TALLOC_CTX *mem_ctx,
|
||||
uint32 *num_entries,
|
||||
WINBIND_USERINFO **info);
|
||||
struct wbint_userinfo **info);
|
||||
|
||||
/* get a list of domain groups */
|
||||
NTSTATUS (*enum_dom_groups)(struct winbindd_domain *domain,
|
||||
@ -275,7 +263,7 @@ struct winbindd_methods {
|
||||
NTSTATUS (*query_user)(struct winbindd_domain *domain,
|
||||
TALLOC_CTX *mem_ctx,
|
||||
const DOM_SID *user_sid,
|
||||
WINBIND_USERINFO *user_info);
|
||||
struct wbint_userinfo *user_info);
|
||||
|
||||
/* lookup all groups that a user is a member of. The backend
|
||||
can also choose to lookup by username or rid for this
|
||||
|
@ -153,7 +153,7 @@ static ADS_STRUCT *ads_cached_connection(struct winbindd_domain *domain)
|
||||
static NTSTATUS query_user_list(struct winbindd_domain *domain,
|
||||
TALLOC_CTX *mem_ctx,
|
||||
uint32 *num_entries,
|
||||
WINBIND_USERINFO **info)
|
||||
struct wbint_userinfo **info)
|
||||
{
|
||||
ADS_STRUCT *ads = NULL;
|
||||
const char *attrs[] = { "*", NULL };
|
||||
@ -192,7 +192,7 @@ static NTSTATUS query_user_list(struct winbindd_domain *domain,
|
||||
goto done;
|
||||
}
|
||||
|
||||
(*info) = TALLOC_ZERO_ARRAY(mem_ctx, WINBIND_USERINFO, count);
|
||||
(*info) = TALLOC_ZERO_ARRAY(mem_ctx, struct wbint_userinfo, count);
|
||||
if (!*info) {
|
||||
status = NT_STATUS_NO_MEMORY;
|
||||
goto done;
|
||||
@ -452,7 +452,7 @@ static NTSTATUS rids_to_names(struct winbindd_domain *domain,
|
||||
static NTSTATUS query_user(struct winbindd_domain *domain,
|
||||
TALLOC_CTX *mem_ctx,
|
||||
const DOM_SID *sid,
|
||||
WINBIND_USERINFO *info)
|
||||
struct wbint_userinfo *info)
|
||||
{
|
||||
ADS_STRUCT *ads = NULL;
|
||||
const char *attrs[] = { "*", NULL };
|
||||
@ -464,6 +464,7 @@ static NTSTATUS query_user(struct winbindd_domain *domain,
|
||||
uint32 group_rid;
|
||||
NTSTATUS status = NT_STATUS_UNSUCCESSFUL;
|
||||
struct netr_SamInfo3 *user = NULL;
|
||||
gid_t gid;
|
||||
|
||||
DEBUG(3,("ads: query_user\n"));
|
||||
|
||||
@ -475,7 +476,6 @@ static NTSTATUS query_user(struct winbindd_domain *domain,
|
||||
|
||||
if ( (user = netsamlogon_cache_get( mem_ctx, sid )) != NULL )
|
||||
{
|
||||
|
||||
DEBUG(5,("query_user: Cache lookup succeeded for %s\n",
|
||||
sid_string_dbg(sid)));
|
||||
|
||||
@ -487,7 +487,8 @@ static NTSTATUS query_user(struct winbindd_domain *domain,
|
||||
|
||||
nss_get_info_cached( domain, sid, mem_ctx, NULL, NULL,
|
||||
&info->homedir, &info->shell, &info->full_name,
|
||||
&info->primary_gid );
|
||||
&gid );
|
||||
info->primary_gid = gid;
|
||||
|
||||
TALLOC_FREE(user);
|
||||
|
||||
@ -512,7 +513,8 @@ static NTSTATUS query_user(struct winbindd_domain *domain,
|
||||
|
||||
nss_get_info_cached( domain, sid, mem_ctx, NULL, NULL,
|
||||
&info->homedir, &info->shell, &info->full_name,
|
||||
&info->primary_gid );
|
||||
&gid);
|
||||
info->primary_gid = gid;
|
||||
|
||||
status = NT_STATUS_OK;
|
||||
goto done;
|
||||
@ -550,7 +552,8 @@ static NTSTATUS query_user(struct winbindd_domain *domain,
|
||||
|
||||
nss_get_info_cached( domain, sid, mem_ctx, ads, msg,
|
||||
&info->homedir, &info->shell, &info->full_name,
|
||||
&info->primary_gid );
|
||||
&gid);
|
||||
info->primary_gid = gid;
|
||||
|
||||
if (info->full_name == NULL) {
|
||||
info->full_name = ads_pull_string(ads, mem_ctx, msg, "name");
|
||||
|
@ -494,7 +494,7 @@ void winbindd_listent_async(TALLOC_CTX *mem_ctx,
|
||||
enum winbindd_result winbindd_dual_list_users(struct winbindd_domain *domain,
|
||||
struct winbindd_cli_state *state)
|
||||
{
|
||||
WINBIND_USERINFO *info;
|
||||
struct wbint_userinfo *info;
|
||||
NTSTATUS status;
|
||||
struct winbindd_methods *methods;
|
||||
uint32 num_entries = 0;
|
||||
|
@ -898,7 +898,8 @@ static void wcache_save_sid_to_name(struct winbindd_domain *domain, NTSTATUS sta
|
||||
}
|
||||
|
||||
|
||||
static void wcache_save_user(struct winbindd_domain *domain, NTSTATUS status, WINBIND_USERINFO *info)
|
||||
static void wcache_save_user(struct winbindd_domain *domain, NTSTATUS status,
|
||||
struct wbint_userinfo *info)
|
||||
{
|
||||
struct cache_entry *centry;
|
||||
fstring sid_string;
|
||||
@ -1334,7 +1335,7 @@ NTSTATUS wcache_save_creds(struct winbindd_domain *domain,
|
||||
static NTSTATUS query_user_list(struct winbindd_domain *domain,
|
||||
TALLOC_CTX *mem_ctx,
|
||||
uint32 *num_entries,
|
||||
WINBIND_USERINFO **info)
|
||||
struct wbint_userinfo **info)
|
||||
{
|
||||
struct winbind_cache *cache = get_cache(domain);
|
||||
struct cache_entry *centry = NULL;
|
||||
@ -1353,7 +1354,7 @@ static NTSTATUS query_user_list(struct winbindd_domain *domain,
|
||||
if (*num_entries == 0)
|
||||
goto do_cached;
|
||||
|
||||
(*info) = TALLOC_ARRAY(mem_ctx, WINBIND_USERINFO, *num_entries);
|
||||
(*info) = TALLOC_ARRAY(mem_ctx, struct wbint_userinfo, *num_entries);
|
||||
if (! (*info)) {
|
||||
smb_panic_fn("query_user_list out of memory");
|
||||
}
|
||||
@ -1942,7 +1943,7 @@ static NTSTATUS rids_to_names(struct winbindd_domain *domain,
|
||||
NTSTATUS wcache_query_user(struct winbindd_domain *domain,
|
||||
TALLOC_CTX *mem_ctx,
|
||||
const struct dom_sid *user_sid,
|
||||
struct winbind_userinfo *info)
|
||||
struct wbint_userinfo *info)
|
||||
{
|
||||
struct winbind_cache *cache = get_cache(domain);
|
||||
struct cache_entry *centry = NULL;
|
||||
@ -2003,7 +2004,7 @@ NTSTATUS wcache_query_user(struct winbindd_domain *domain,
|
||||
static NTSTATUS query_user(struct winbindd_domain *domain,
|
||||
TALLOC_CTX *mem_ctx,
|
||||
const DOM_SID *user_sid,
|
||||
WINBIND_USERINFO *info)
|
||||
struct wbint_userinfo *info)
|
||||
{
|
||||
NTSTATUS status;
|
||||
|
||||
|
@ -109,28 +109,13 @@ NTSTATUS _wbint_Gid2Sid(pipes_struct *p, struct wbint_Gid2Sid *r)
|
||||
NTSTATUS _wbint_QueryUser(pipes_struct *p, struct wbint_QueryUser *r)
|
||||
{
|
||||
struct winbindd_domain *domain = wb_child_domain();
|
||||
WINBIND_USERINFO uinfo;
|
||||
NTSTATUS status;
|
||||
|
||||
if (domain == NULL) {
|
||||
return NT_STATUS_REQUEST_NOT_ACCEPTED;
|
||||
}
|
||||
|
||||
status = domain->methods->query_user(domain, p->mem_ctx, r->in.sid,
|
||||
&uinfo);
|
||||
if (!NT_STATUS_IS_OK(status)) {
|
||||
return status;
|
||||
}
|
||||
|
||||
r->out.info->acct_name = uinfo.acct_name;
|
||||
r->out.info->full_name = uinfo.full_name;
|
||||
r->out.info->homedir = uinfo.homedir;
|
||||
r->out.info->shell = uinfo.shell;
|
||||
r->out.info->primary_gid = uinfo.primary_gid;
|
||||
sid_copy(&r->out.info->user_sid, &uinfo.user_sid);
|
||||
sid_copy(&r->out.info->group_sid, &uinfo.group_sid);
|
||||
|
||||
return NT_STATUS_OK;
|
||||
return domain->methods->query_user(domain, p->mem_ctx, r->in.sid,
|
||||
r->out.info);
|
||||
}
|
||||
|
||||
NTSTATUS _wbint_LookupUserAliases(pipes_struct *p,
|
||||
|
@ -379,7 +379,7 @@ static NTSTATUS builtin_enum_dom_groups(struct winbindd_domain *domain,
|
||||
static NTSTATUS builtin_query_user_list(struct winbindd_domain *domain,
|
||||
TALLOC_CTX *mem_ctx,
|
||||
uint32 *num_entries,
|
||||
WINBIND_USERINFO **info)
|
||||
struct wbint_userinfo **info)
|
||||
{
|
||||
/* We don't have users */
|
||||
*num_entries = 0;
|
||||
@ -391,7 +391,7 @@ static NTSTATUS builtin_query_user_list(struct winbindd_domain *domain,
|
||||
static NTSTATUS builtin_query_user(struct winbindd_domain *domain,
|
||||
TALLOC_CTX *mem_ctx,
|
||||
const DOM_SID *user_sid,
|
||||
WINBIND_USERINFO *user_info)
|
||||
struct wbint_userinfo *user_info)
|
||||
{
|
||||
return NT_STATUS_NO_SUCH_USER;
|
||||
}
|
||||
@ -447,7 +447,7 @@ static NTSTATUS sam_enum_dom_groups(struct winbindd_domain *domain,
|
||||
static NTSTATUS sam_query_user_list(struct winbindd_domain *domain,
|
||||
TALLOC_CTX *mem_ctx,
|
||||
uint32 *num_entries,
|
||||
WINBIND_USERINFO **info)
|
||||
struct wbint_userinfo **info)
|
||||
{
|
||||
struct pdb_search *ps = pdb_search_users(talloc_tos(), ACB_NORMAL);
|
||||
struct samr_displayentry *entries = NULL;
|
||||
@ -464,7 +464,7 @@ static NTSTATUS sam_query_user_list(struct winbindd_domain *domain,
|
||||
1, 0xffffffff,
|
||||
&entries);
|
||||
|
||||
*info = TALLOC_ZERO_ARRAY(mem_ctx, WINBIND_USERINFO, *num_entries);
|
||||
*info = TALLOC_ZERO_ARRAY(mem_ctx, struct wbint_userinfo, *num_entries);
|
||||
if (!(*info)) {
|
||||
TALLOC_FREE(ps);
|
||||
return NT_STATUS_NO_MEMORY;
|
||||
@ -499,7 +499,7 @@ static NTSTATUS sam_query_user_list(struct winbindd_domain *domain,
|
||||
static NTSTATUS sam_query_user(struct winbindd_domain *domain,
|
||||
TALLOC_CTX *mem_ctx,
|
||||
const DOM_SID *user_sid,
|
||||
WINBIND_USERINFO *user_info)
|
||||
struct wbint_userinfo *user_info)
|
||||
{
|
||||
struct samu *sampass = NULL;
|
||||
|
||||
|
@ -174,7 +174,7 @@ NTSTATUS wcache_name_to_sid(struct winbindd_domain *domain,
|
||||
NTSTATUS wcache_query_user(struct winbindd_domain *domain,
|
||||
TALLOC_CTX *mem_ctx,
|
||||
const struct dom_sid *user_sid,
|
||||
struct winbind_userinfo *info);
|
||||
struct wbint_userinfo *info);
|
||||
NTSTATUS wcache_lookup_useraliases(struct winbindd_domain *domain,
|
||||
TALLOC_CTX *mem_ctx,
|
||||
uint32 num_sids, const DOM_SID *sids,
|
||||
@ -707,7 +707,7 @@ struct tevent_req *wb_queryuser_send(TALLOC_CTX *mem_ctx,
|
||||
struct tevent_context *ev,
|
||||
const struct dom_sid *user_sid);
|
||||
NTSTATUS wb_queryuser_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx,
|
||||
struct winbind_userinfo **pinfo);
|
||||
struct wbint_userinfo **pinfo);
|
||||
|
||||
struct tevent_req *wb_getpwsid_send(TALLOC_CTX *mem_ctx,
|
||||
struct tevent_context *ev,
|
||||
|
@ -31,7 +31,7 @@ extern struct winbindd_methods msrpc_methods;
|
||||
static NTSTATUS query_user_list(struct winbindd_domain *domain,
|
||||
TALLOC_CTX *mem_ctx,
|
||||
uint32 *num_entries,
|
||||
WINBIND_USERINFO **info)
|
||||
struct wbint_userinfo **info)
|
||||
{
|
||||
NTSTATUS result;
|
||||
|
||||
@ -152,7 +152,7 @@ static NTSTATUS rids_to_names(struct winbindd_domain *domain,
|
||||
static NTSTATUS query_user(struct winbindd_domain *domain,
|
||||
TALLOC_CTX *mem_ctx,
|
||||
const DOM_SID *user_sid,
|
||||
WINBIND_USERINFO *user_info)
|
||||
struct wbint_userinfo *user_info)
|
||||
{
|
||||
NTSTATUS result;
|
||||
|
||||
|
@ -35,7 +35,7 @@
|
||||
static NTSTATUS query_user_list(struct winbindd_domain *domain,
|
||||
TALLOC_CTX *mem_ctx,
|
||||
uint32 *num_entries,
|
||||
WINBIND_USERINFO **info)
|
||||
struct wbint_userinfo **info)
|
||||
{
|
||||
NTSTATUS result;
|
||||
struct policy_handle dom_pol;
|
||||
@ -88,7 +88,8 @@ static NTSTATUS query_user_list(struct winbindd_domain *domain,
|
||||
|
||||
*num_entries += num_dom_users;
|
||||
|
||||
*info = TALLOC_REALLOC_ARRAY(mem_ctx, *info, WINBIND_USERINFO,
|
||||
*info = TALLOC_REALLOC_ARRAY(mem_ctx, *info,
|
||||
struct wbint_userinfo,
|
||||
*num_entries);
|
||||
|
||||
if (!(*info)) {
|
||||
@ -493,7 +494,7 @@ static NTSTATUS msrpc_rids_to_names(struct winbindd_domain *domain,
|
||||
static NTSTATUS query_user(struct winbindd_domain *domain,
|
||||
TALLOC_CTX *mem_ctx,
|
||||
const DOM_SID *user_sid,
|
||||
WINBIND_USERINFO *user_info)
|
||||
struct wbint_userinfo *user_info)
|
||||
{
|
||||
NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
|
||||
struct policy_handle dom_pol, user_pol;
|
||||
|
@ -156,7 +156,7 @@ enum winbindd_result winbindd_dual_userinfo(struct winbindd_domain *domain,
|
||||
struct winbindd_cli_state *state)
|
||||
{
|
||||
DOM_SID sid;
|
||||
WINBIND_USERINFO user_info;
|
||||
struct wbint_userinfo user_info;
|
||||
NTSTATUS status;
|
||||
|
||||
/* Ensure null termination */
|
||||
@ -285,7 +285,7 @@ static bool get_sam_user_entries(struct getent_state *ent, TALLOC_CTX *mem_ctx)
|
||||
{
|
||||
NTSTATUS status;
|
||||
uint32 num_entries;
|
||||
WINBIND_USERINFO *info;
|
||||
struct wbint_userinfo *info;
|
||||
struct getpwent_user *name_list = NULL;
|
||||
struct winbindd_domain *domain;
|
||||
struct winbindd_methods *methods;
|
||||
|
Loading…
x
Reference in New Issue
Block a user