diff options
author | Jeremy Allison <jra@samba.org> | 2000-08-02 02:11:55 +0000 |
---|---|---|
committer | Jeremy Allison <jra@samba.org> | 2000-08-02 02:11:55 +0000 |
commit | 17dcd9a834fc915fb1ff2d8042a23000eeb7acfa (patch) | |
tree | 18a9a8cfa2883baf163da29265fd08b8a3b81c9f /source3/rpc_server | |
parent | 7f36df301e28dc8ca0e5bfadc109d6e907d9ba2b (diff) | |
download | samba-17dcd9a834fc915fb1ff2d8042a23000eeb7acfa.tar.gz samba-17dcd9a834fc915fb1ff2d8042a23000eeb7acfa.tar.bz2 samba-17dcd9a834fc915fb1ff2d8042a23000eeb7acfa.zip |
Started to canonicalize our handling of uid -> sid code in order to
get ready and fix se_access_check().
Added cannonical lookup_name(), lookup_sid(), uid_to_sid(), gid_to_sid()
functions that look via winbind first the fall back on local lookup.
All Samba should use these rather than trying to call winbindd code
directly.
Added NT_USER_TOKEN struct in user_struct, contains list of NT sids
associated with this user.
se_access_check() should use this (cached) value rather than attempting
to do the same thing itself when given a uid/gid pair.
More work needs to be done to preserve these things accross security
context changes (especially with the tricky pipe problem) but I'm
beginning to see how this will be done..... probably by registering
a new vuid for an authenticated RPC pipe and not treating the
pipe calls specially.
More thoughts needed - but we're almost there...
Jeremy.
(This used to be commit 5e5cc6efe2e4687be59085f562caea1e2e05d0a8)
Diffstat (limited to 'source3/rpc_server')
-rw-r--r-- | source3/rpc_server/srv_lsa.c | 2 | ||||
-rw-r--r-- | source3/rpc_server/srv_samr.c | 4 |
2 files changed, 3 insertions, 3 deletions
diff --git a/source3/rpc_server/srv_lsa.c b/source3/rpc_server/srv_lsa.c index bfb671d167..dc97d6db44 100644 --- a/source3/rpc_server/srv_lsa.c +++ b/source3/rpc_server/srv_lsa.c @@ -238,7 +238,7 @@ static void init_lsa_rid2s(DOM_R_REF *ref, DOM_RID2 *rid2, if (map_domain_name_to_sid(&dom_sid, dom_name)) { dom_idx = init_dom_ref(ref, dom_name, &dom_sid); - if (lookup_local_name(dom_name, user, &sid, &sid_name_use) && sid_split_rid(&sid, &rid)) + if (local_lookup_name(dom_name, user, &sid, &sid_name_use) && sid_split_rid(&sid, &rid)) status = True; } diff --git a/source3/rpc_server/srv_samr.c b/source3/rpc_server/srv_samr.c index 5a0f049ba7..e80175f71d 100644 --- a/source3/rpc_server/srv_samr.c +++ b/source3/rpc_server/srv_samr.c @@ -978,7 +978,7 @@ static BOOL samr_reply_query_aliasinfo(SAMR_Q_QUERY_ALIASINFO *q_u, if(alias_rid == 0xffffffff) r_e.status = 0xC0000000 | NT_STATUS_NO_SUCH_ALIAS; - if(!lookup_local_rid(alias_rid, alias, &type)) + if(!local_lookup_rid(alias_rid, alias, &type)) { r_e.status = 0xC0000000 | NT_STATUS_NO_SUCH_ALIAS; } @@ -1151,7 +1151,7 @@ static BOOL samr_reply_lookup_names(SAMR_Q_LOOKUP_NAMES *q_u, if(sid_equal(&pol_sid, &global_sam_sid)) { DOM_SID sid; - if(lookup_local_name(global_myname, name, + if(local_lookup_name(global_myname, name, &sid, &type[i])) { sid_split_rid( &sid, &rid[i]); |