svn commit: samba r3875 - branches/SAMBA_3_0/source/passdb branches/SAMBA_3_0/source/rpc_server trunk/source/passdb trunk/source/rpc_server

gd at samba.org gd at samba.org
Fri Nov 19 13:26:18 GMT 2004


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 ));
 
 		}
 



More information about the samba-cvs mailing list