Author: gd Date: 2004-11-19 13:26:17 +0000 (Fri, 19 Nov 2004) New Revision: 3875
WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=3875 Log: Allow to look up at least or own sid in _lsa_lookup_sids. This fixes Bugzilla #1076 and Exchange 5.5 SP4 can then be finally installed on NT4 in a samba-controlled domain. Guenther Modified: branches/SAMBA_3_0/source/passdb/lookup_sid.c branches/SAMBA_3_0/source/passdb/passdb.c branches/SAMBA_3_0/source/rpc_server/srv_lsa_nt.c trunk/source/passdb/lookup_sid.c trunk/source/passdb/passdb.c trunk/source/rpc_server/srv_lsa_nt.c Changeset: Modified: branches/SAMBA_3_0/source/passdb/lookup_sid.c =================================================================== --- branches/SAMBA_3_0/source/passdb/lookup_sid.c 2004-11-19 12:12:10 UTC (rev 3874) +++ branches/SAMBA_3_0/source/passdb/lookup_sid.c 2004-11-19 13:26:17 UTC (rev 3875) @@ -76,6 +76,13 @@ /* Check if this is our own sid. This should perhaps be done by winbind? For the moment handle it here. */ + if (sid->num_auths == 4 && sid_equal(get_global_sam_sid(), sid)) { + DOM_SID tmp_sid; + sid_copy(&tmp_sid, sid); + return map_domain_sid_to_name(&tmp_sid, dom_name) && + local_lookup_sid(sid, name, name_type); + } + if (sid->num_auths == 5) { DOM_SID tmp_sid; uint32 rid; Modified: branches/SAMBA_3_0/source/passdb/passdb.c =================================================================== --- branches/SAMBA_3_0/source/passdb/passdb.c 2004-11-19 12:12:10 UTC (rev 3874) +++ branches/SAMBA_3_0/source/passdb/passdb.c 2004-11-19 13:26:17 UTC (rev 3875) @@ -742,6 +742,14 @@ GROUP_MAP map; BOOL ret; + if (sid_equal(get_global_sam_sid(), sid)) { + *psid_name_use = SID_NAME_DOMAIN; + fstrcpy(name, ""); + DEBUG(5,("local_lookup_sid: SID is our own domain-sid: %s.\n", + sid_string_static(sid))); + return True; + } + if (!sid_peek_check_rid(get_global_sam_sid(), sid, &rid)){ DEBUG(0,("local_lookup_sid: sid_peek_check_rid return False! SID: %s\n", sid_string_static(&map.sid))); Modified: branches/SAMBA_3_0/source/rpc_server/srv_lsa_nt.c =================================================================== --- branches/SAMBA_3_0/source/rpc_server/srv_lsa_nt.c 2004-11-19 12:12:10 UTC (rev 3874) +++ branches/SAMBA_3_0/source/rpc_server/srv_lsa_nt.c 2004-11-19 13:26:17 UTC (rev 3875) @@ -281,8 +281,8 @@ } dom_idx = init_dom_ref(ref, dom_name, &find_sid); - DEBUG(10,("init_lsa_trans_names: added user '%s\\%s' to " - "referenced list.\n", dom_name, name )); + DEBUG(10,("init_lsa_trans_names: added %s '%s\\%s' (%d) to referenced list.\n", + sid_type_lookup(sid_name_use), dom_name, name, sid_name_use )); } Modified: trunk/source/passdb/lookup_sid.c =================================================================== --- trunk/source/passdb/lookup_sid.c 2004-11-19 12:12:10 UTC (rev 3874) +++ trunk/source/passdb/lookup_sid.c 2004-11-19 13:26:17 UTC (rev 3875) @@ -76,6 +76,13 @@ /* Check if this is our own sid. This should perhaps be done by winbind? For the moment handle it here. */ + if (sid->num_auths == 4 && sid_equal(get_global_sam_sid(), sid)) { + DOM_SID tmp_sid; + sid_copy(&tmp_sid, sid); + return map_domain_sid_to_name(&tmp_sid, dom_name) && + local_lookup_sid(sid, name, name_type); + } + if (sid->num_auths == 5) { DOM_SID tmp_sid; uint32 rid; Modified: trunk/source/passdb/passdb.c =================================================================== --- trunk/source/passdb/passdb.c 2004-11-19 12:12:10 UTC (rev 3874) +++ trunk/source/passdb/passdb.c 2004-11-19 13:26:17 UTC (rev 3875) @@ -754,6 +754,14 @@ GROUP_MAP map; BOOL ret; + if (sid_equal(get_global_sam_sid(), sid)) { + *psid_name_use = SID_NAME_DOMAIN; + fstrcpy(name, ""); + DEBUG(5,("local_lookup_sid: SID is our own domain-sid: %s.\n", + sid_string_static(sid))); + return True; + } + if (!sid_peek_check_rid(get_global_sam_sid(), sid, &rid)){ DEBUG(0,("local_lookup_sid: sid_peek_check_rid return False! SID: %s\n", sid_string_static(&map.sid))); Modified: trunk/source/rpc_server/srv_lsa_nt.c =================================================================== --- trunk/source/rpc_server/srv_lsa_nt.c 2004-11-19 12:12:10 UTC (rev 3874) +++ trunk/source/rpc_server/srv_lsa_nt.c 2004-11-19 13:26:17 UTC (rev 3875) @@ -282,8 +282,8 @@ } dom_idx = init_dom_ref(ref, dom_name, &find_sid); - DEBUG(10,("init_lsa_trans_names: added user '%s\\%s' to " - "referenced list.\n", dom_name, name )); + DEBUG(10,("init_lsa_trans_names: added %s '%s\\%s' (%d) to referenced list.\n", + sid_type_lookup(sid_name_use), dom_name, name, sid_name_use )); }