diff options
Diffstat (limited to 'source3/passdb')
-rw-r--r-- | source3/passdb/passdb.c | 18 |
1 files changed, 6 insertions, 12 deletions
diff --git a/source3/passdb/passdb.c b/source3/passdb/passdb.c index ae52b3d4f1..a126594d72 100644 --- a/source3/passdb/passdb.c +++ b/source3/passdb/passdb.c @@ -1089,23 +1089,21 @@ DOM_SID *local_uid_to_sid(DOM_SID *psid, uid_t uid) BOOL local_sid_to_uid(uid_t *puid, const DOM_SID *psid, enum SID_NAME_USE *name_type) { - DOM_SID dom_sid; - uint32 rid; SAM_ACCOUNT *sampw = NULL; struct passwd *unix_pw; const char *user_name; *name_type = SID_NAME_UNKNOWN; - sid_copy(&dom_sid, psid); - sid_split_rid(&dom_sid, &rid); - /* * We can only convert to a uid if this is our local * Domain SID (ie. we are the controling authority). */ - if ( !sid_equal(get_global_sam_sid(), &dom_sid) ) + if (!sid_check_is_in_our_domain(psid) ) { + DEBUG(5,("local_sid_to_uid: this SID (%s) is not from our domain\n", sid_string_static(psid))); return False; + } + /* lookup the user account */ @@ -1189,7 +1187,6 @@ DOM_SID *local_gid_to_sid(DOM_SID *psid, gid_t gid) BOOL local_sid_to_gid(gid_t *pgid, const DOM_SID *psid, enum SID_NAME_USE *name_type) { - DOM_SID dom_sid; uint32 rid; GROUP_MAP group; @@ -1206,12 +1203,9 @@ BOOL local_sid_to_gid(gid_t *pgid, const DOM_SID *psid, enum SID_NAME_USE *name_ /* fallback to rid mapping if enabled */ if ( lp_enable_rid_algorithm() ) { - sid_copy(&dom_sid, psid); - sid_split_rid(&dom_sid, &rid); - if (!sid_equal(get_global_sam_sid(), &dom_sid) ) { - DEBUG(5,("local_sid_to_gid: RID algorithm only supported for our domain (not %s)\n", - sid_string_static(&dom_sid))); + if (!sid_check_is_in_our_domain(psid) ) { + DEBUG(5,("local_sid_to_gid: RID algorithm only supported for our domain (%s is not)\n", sid_string_static(psid))); return False; } |