[SCM] Samba Shared Repository - branch master updated

Andrew Bartlett abartlet at samba.org
Mon Dec 14 16:05:08 MST 2009


The branch, master has been updated
       via  ef5508b... s4: rename res/res2 to something more explicit
       via  d2ec67e... s4: upgradeprovision handle renaming and knownobjects
       via  fb85977... s4: upgradeprovision rename also when there is a mismatch on the case of name attribute
       via  3357319... s4: reorder action to permit old provision to be correctly upgraded
       via  f871de7... s4:provision - Remap conflicting thumbnailPhoto and thumbnailLogo OID's.
      from  0d10efe... s3: Allow up to 20480 entries in LookupSids, as mandated by the official IDL

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit ef5508bc7864dcd7128cf91017407efede7572d2
Author: Matthieu Patou <mat at matws.net>
Date:   Sat Dec 12 19:13:15 2009 +0300

    s4: rename res/res2 to something more explicit

commit d2ec67eb53b93c6e70c411ea9e892b4d4dca9ccc
Author: Matthieu Patou <mat at matws.net>
Date:   Sat Dec 12 16:28:31 2009 +0300

    s4: upgradeprovision handle renaming and knownobjects

commit fb85977d7c62d623997160d0c90fcb0ae83953aa
Author: Matthieu Patou <mat at matws.net>
Date:   Sat Dec 12 18:33:53 2009 +0300

    s4: upgradeprovision rename also when there is a mismatch on the case of name attribute
    
      Renaming not only helps when name attribute is not here
      it also helps when the case is not the good one. So
      in order to avoid problem and have as much as possible similar provision
      we should use the rename whenever a name difference appear.

commit 335731962092033d90374a785294b2fd55515310
Author: Matthieu Patou <mat at matws.net>
Date:   Mon Nov 30 02:37:35 2009 +0300

    s4: reorder action to permit old provision to be correctly upgraded

commit f871de7def8dcb180f34b04eff182600607c9f87
Author: Endi Sukma Dewata <edewata at redhat.com>
Date:   Tue Dec 8 14:55:16 2009 -0600

    s4:provision - Remap conflicting thumbnailPhoto and thumbnailLogo OID's.

-----------------------------------------------------------------------

Summary of changes:
 source4/scripting/bin/upgradeprovision |  161 ++++++++++++++++++--------------
 source4/setup/schema-map-fedora-ds-1.0 |    5 +
 source4/setup/schema_samba4.ldif       |    3 +
 3 files changed, 97 insertions(+), 72 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source4/scripting/bin/upgradeprovision b/source4/scripting/bin/upgradeprovision
index 48f6747..da827ac 100755
--- a/source4/scripting/bin/upgradeprovision
+++ b/source4/scripting/bin/upgradeprovision
@@ -77,10 +77,10 @@ hashAttrNotCopied = { 	"dn": 1,"whenCreated": 1,"whenChanged": 1,"objectGUID": 1
 
 # Usually for an object that already exists we do not overwrite attributes as they might have been changed for good
 # reasons. Anyway for a few of thems it's mandatory to replace them otherwise the provision will be broken somehow.
-hashOverwrittenAtt = {	 "prefixMap": replace, "systemMayContain": replace,"systemOnly":replace, "searchFlags":replace,\
-						 "mayContain":replace,  "systemFlags":replace,
-						 "oEMInformation":replace, "operatingSystemVersion":replace, "adminPropertyPages":replace,
-						 "defaultSecurityDescriptor": replace}
+hashOverwrittenAtt = {	"prefixMap": replace, "systemMayContain": replace,"systemOnly":replace, "searchFlags":replace,\
+			"mayContain":replace,  "systemFlags":replace,"description":replace,
+			"oEMInformation":replace, "operatingSystemVersion":replace, "adminPropertyPages":replace,
+			"defaultSecurityDescriptor": replace,"wellKnownObjects":replace,"privilege":delete}
 backlinked = []
 
 def define_what_to_log(opts):
@@ -140,6 +140,12 @@ if setup_dir is None:
 
 session = system_session()
 
+# simple helper to allow back and forth rename
+def identic_rename(ldbobj,dn):
+	(before,sep,after)=str(dn).partition('=')
+	ldbobj.rename(dn,ldb.Dn(ldbobj,"%s=foo%s"%(before,after)))
+	ldbobj.rename(ldb.Dn(ldbobj,"%s=foo%s"%(before,after)),dn)
+
 # Create an array of backlinked attributes
 def populate_backlink(newpaths,creds,session,schemadn):
 	newsam_ldb = Ldb(newpaths.samdb, session_info=session, credentials=creds,lp=lp)
@@ -191,16 +197,16 @@ def guess_names_from_current_provision(credentials,session_info,paths):
 
 	# That's a bit simplistic but it's ok as long as we have only 3 partitions
 	attrs2 = ["defaultNamingContext", "schemaNamingContext","configurationNamingContext","rootDomainNamingContext"]
-	res2 = samdb.search(expression="(objectClass=*)",base="", scope=SCOPE_BASE, attrs=attrs2)
+	current = samdb.search(expression="(objectClass=*)",base="", scope=SCOPE_BASE, attrs=attrs2)
 
-	names.configdn = res2[0]["configurationNamingContext"]
+	names.configdn = current[0]["configurationNamingContext"]
 	configdn = str(names.configdn)
-	names.schemadn = res2[0]["schemaNamingContext"]
-	if not (ldb.Dn(samdb, basedn) == (ldb.Dn(samdb, res2[0]["defaultNamingContext"][0]))):
-		raise ProvisioningError(("basedn in %s (%s) and from %s (%s) is not the same ..." % (paths.samdb, str(res2[0]["defaultNamingContext"][0]), paths.smbconf, basedn)))
+	names.schemadn = current[0]["schemaNamingContext"]
+	if not (ldb.Dn(samdb, basedn) == (ldb.Dn(samdb, current[0]["defaultNamingContext"][0]))):
+		raise ProvisioningError(("basedn in %s (%s) and from %s (%s) is not the same ..." % (paths.samdb, str(current[0]["defaultNamingContext"][0]), paths.smbconf, basedn)))
 
-	names.domaindn=res2[0]["defaultNamingContext"]
-	names.rootdn=res2[0]["rootDomainNamingContext"]
+	names.domaindn=current[0]["defaultNamingContext"]
+	names.rootdn=current[0]["rootDomainNamingContext"]
 	# default site name
 	attrs3 = ["cn"]
 	res3= samdb.search(expression="(objectClass=*)",base="CN=Sites,"+configdn, scope=SCOPE_ONELEVEL, attrs=attrs3)
@@ -374,8 +380,8 @@ def handle_special_case(att,delta,new,old,ischema):
 		return 1
 	if (str(old[0].dn) == "CN=Samba4-Local-Domain,%s"%(str(names.schemadn)) and att == "defaultObjectCategory" and flag  == ldb.FLAG_MOD_REPLACE):
 		return 1
-	if (str(old[0].dn) == "CN=S-1-5-11,CN=ForeignSecurityPrincipals,%s"%(str(names.rootdn)) and att == "description" and flag  == ldb.FLAG_MOD_DELETE):
-		return 1
+#	if (str(old[0].dn) == "CN=S-1-5-11,CN=ForeignSecurityPrincipals,%s"%(str(names.rootdn)) and att == "description" and flag  == ldb.FLAG_MOD_DELETE):
+#		return 1
 	if (str(old[0].dn) == "CN=Title,%s"%(str(names.schemadn)) and att == "rangeUpper" and flag  == ldb.FLAG_MOD_REPLACE):
 		return 1
 	if ( (att == "member" or att == "servicePrincipalName") and flag  == ldb.FLAG_MOD_REPLACE):
@@ -406,28 +412,28 @@ def update_secrets(newpaths,paths,creds,session):
 	message(SIMPLE,"update secrets.ldb")
 	newsecrets_ldb = Ldb(newpaths.secrets, session_info=session, credentials=creds,lp=lp)
 	secrets_ldb = Ldb(paths.secrets, session_info=session, credentials=creds,lp=lp, options=["modules:samba_secrets"])
-	res = newsecrets_ldb.search(expression="dn=@MODULES",base="", scope=SCOPE_SUBTREE)
-	res2 = secrets_ldb.search(expression="dn=@MODULES",base="", scope=SCOPE_SUBTREE)
-	delta = secrets_ldb.msg_diff(res2[0],res[0])
-	delta.dn = res2[0].dn
+	reference = newsecrets_ldb.search(expression="dn=@MODULES",base="", scope=SCOPE_SUBTREE)
+	current = secrets_ldb.search(expression="dn=@MODULES",base="", scope=SCOPE_SUBTREE)
+	delta = secrets_ldb.msg_diff(current[0],reference[0])
+	delta.dn = current[0].dn
 	secrets_ldb.modify(delta)
 
 	newsecrets_ldb = Ldb(newpaths.secrets, session_info=session, credentials=creds,lp=lp)
 	secrets_ldb = Ldb(paths.secrets, session_info=session, credentials=creds,lp=lp)
-	res = newsecrets_ldb.search(expression="objectClass=top",base="", scope=SCOPE_SUBTREE,attrs=["dn"])
-	res2 = secrets_ldb.search(expression="objectClass=top",base="", scope=SCOPE_SUBTREE,attrs=["dn"])
+	reference = newsecrets_ldb.search(expression="objectClass=top",base="", scope=SCOPE_SUBTREE,attrs=["dn"])
+	current = secrets_ldb.search(expression="objectClass=top",base="", scope=SCOPE_SUBTREE,attrs=["dn"])
 	hash_new = {}
 	hash = {}
 	listMissing = []
 	listPresent = []
 
 	empty = ldb.Message()
-	for i in range(0,len(res)):
-		hash_new[str(res[i]["dn"]).lower()] = res[i]["dn"]
+	for i in range(0,len(reference)):
+		hash_new[str(reference[i]["dn"]).lower()] = reference[i]["dn"]
 
 	# Create a hash for speeding the search of existing object in the current provision
-	for i in range(0,len(res2)):
-		hash[str(res2[i]["dn"]).lower()] = res2[i]["dn"]
+	for i in range(0,len(current)):
+		hash[str(current[i]["dn"]).lower()] = current[i]["dn"]
 
 	for k in hash_new.keys():
 		if not hash.has_key(k):
@@ -435,21 +441,21 @@ def update_secrets(newpaths,paths,creds,session):
 		else:
 			listPresent.append(hash_new[k])
 	for entry in listMissing:
-		res = newsecrets_ldb.search(expression="dn=%s"%entry,base="", scope=SCOPE_SUBTREE)
-		res2 = secrets_ldb.search(expression="dn=%s"%entry,base="", scope=SCOPE_SUBTREE)
-		delta = secrets_ldb.msg_diff(empty,res[0])
+		reference = newsecrets_ldb.search(expression="dn=%s"%entry,base="", scope=SCOPE_SUBTREE)
+		current = secrets_ldb.search(expression="dn=%s"%entry,base="", scope=SCOPE_SUBTREE)
+		delta = secrets_ldb.msg_diff(empty,reference[0])
 		for att in hashAttrNotCopied.keys():
 			delta.remove(att)
-		message(CHANGE,"Entry %s is missing from secrets.ldb"%res[0].dn)
+		message(CHANGE,"Entry %s is missing from secrets.ldb"%reference[0].dn)
 		for att in delta:
 			message(CHANGE," Adding attribute %s"%att)
-		delta.dn = res[0].dn
+		delta.dn = reference[0].dn
 		secrets_ldb.add(delta)
 
 	for entry in listPresent:
-		res = newsecrets_ldb.search(expression="dn=%s"%entry,base="", scope=SCOPE_SUBTREE)
-		res2 = secrets_ldb.search(expression="dn=%s"%entry,base="", scope=SCOPE_SUBTREE)
-		delta = secrets_ldb.msg_diff(res2[0],res[0])
+		reference = newsecrets_ldb.search(expression="dn=%s"%entry,base="", scope=SCOPE_SUBTREE)
+		current = secrets_ldb.search(expression="dn=%s"%entry,base="", scope=SCOPE_SUBTREE)
+		delta = secrets_ldb.msg_diff(current[0],reference[0])
 		i=0
 		for att in hashAttrNotCopied.keys():
 			delta.remove(att)
@@ -457,26 +463,25 @@ def update_secrets(newpaths,paths,creds,session):
 			i = i + 1
 
 			if att == "name":
-				message(CHANGE,"Found attribute name on  %s, must rename the DN "%(res2[0].dn))
-				secrets_ldb.rename(res2[0].dn,ldb.Dn(secrets_ldb,"%sfoo"%str(res2[0].dn)))
-				secrets_ldb.rename(ldb.Dn(secrets_ldb,"%sfoo"%str(res2[0].dn)),res2[0].dn)
+				message(CHANGE,"Found attribute name on  %s, must rename the DN "%(current[0].dn))
+				identic_rename(secrets_ldb,reference[0].dn)
 			else:
 				delta.remove(att)
 
 
 	for entry in listPresent:
-		res = newsecrets_ldb.search(expression="dn=%s"%entry,base="", scope=SCOPE_SUBTREE)
-		res2 = secrets_ldb.search(expression="dn=%s"%entry,base="", scope=SCOPE_SUBTREE)
-		delta = secrets_ldb.msg_diff(res2[0],res[0])
+		reference = newsecrets_ldb.search(expression="dn=%s"%entry,base="", scope=SCOPE_SUBTREE)
+		current = secrets_ldb.search(expression="dn=%s"%entry,base="", scope=SCOPE_SUBTREE)
+		delta = secrets_ldb.msg_diff(current[0],reference[0])
 		i=0
 		for att in hashAttrNotCopied.keys():
 			delta.remove(att)
 		for att in delta:
 			i = i + 1
 			if att != "dn":
-				message(CHANGE," Adding/Changing attribute %s to %s"%(att,res2[0].dn))
+				message(CHANGE," Adding/Changing attribute %s to %s"%(att,current[0].dn))
 
-		delta.dn = res2[0].dn
+		delta.dn = current[0].dn
 		secrets_ldb.modify(delta)
 
 
@@ -490,25 +495,27 @@ def check_diff_name(newpaths,paths,creds,session,basedn,names,ischema):
 	hashallSD = {}
 	listMissing = []
 	listPresent = []
-	res = []
-	res2 = []
+	reference = []
+	current = []
 	# Connect to the reference provision and get all the attribute in the partition referred by name
 	newsam_ldb = Ldb(newpaths.samdb, session_info=session, credentials=creds,lp=lp)
 	sam_ldb = Ldb(paths.samdb, session_info=session, credentials=creds,lp=lp, options=["modules:samba_dsdb"])
+	sam_ldb.transaction_start()
 	if ischema:
-		res = newsam_ldb.search(expression="objectClass=*",base=basedn, scope=SCOPE_SUBTREE,attrs=["dn"])
-		res2 = sam_ldb.search(expression="objectClass=*",base=basedn, scope=SCOPE_SUBTREE,attrs=["dn"])
+		reference = newsam_ldb.search(expression="objectClass=*",base=basedn, scope=SCOPE_SUBTREE,attrs=["dn"])
+		current = sam_ldb.search(expression="objectClass=*",base=basedn, scope=SCOPE_SUBTREE,attrs=["dn"])
 	else:
-		res = newsam_ldb.search(expression="objectClass=*",base=basedn, scope=SCOPE_SUBTREE,attrs=["dn"],controls=["search_options:1:2"])
-		res2 = sam_ldb.search(expression="objectClass=*",base=basedn, scope=SCOPE_SUBTREE,attrs=["dn"],controls=["search_options:1:2"])
+		reference = newsam_ldb.search(expression="objectClass=*",base=basedn, scope=SCOPE_SUBTREE,attrs=["dn"],controls=["search_options:1:2"])
+		current = sam_ldb.search(expression="objectClass=*",base=basedn, scope=SCOPE_SUBTREE,attrs=["dn"],controls=["search_options:1:2"])
 
+	sam_ldb.transaction_commit()
 	# Create a hash for speeding the search of new object
-	for i in range(0,len(res)):
-		hash_new[str(res[i]["dn"]).lower()] = res[i]["dn"]
+	for i in range(0,len(reference)):
+		hash_new[str(reference[i]["dn"]).lower()] = reference[i]["dn"]
 
 	# Create a hash for speeding the search of existing object in the current provision
-	for i in range(0,len(res2)):
-		hash[str(res2[i]["dn"]).lower()] = res2[i]["dn"]
+	for i in range(0,len(current)):
+		hash[str(current[i]["dn"]).lower()] = current[i]["dn"]
 
 	for k in hash_new.keys():
 		if not hash.has_key(k):
@@ -533,15 +540,16 @@ def check_diff_name(newpaths,paths,creds,session,basedn,names,ischema):
 		sam_ldb.set_schema_from_ldb(schema.ldb)
 		# And now we can connect to the DB - the schema won't be loaded from the DB
 		sam_ldb.connect(paths.samdb)
-		sam_ldb.transaction_start()
 	else:
-		sam_ldb.transaction_start()
+		sam_ldb = Ldb(paths.samdb, session_info=session, credentials=creds,lp=lp, options=["modules:samba_dsdb"])
+
+	sam_ldb.transaction_start()
 
 	empty = ldb.Message()
 	message(SIMPLE,"There are %d missing objects"%(len(listMissing)))
 	for dn in listMissing:
-		res = newsam_ldb.search(expression="dn=%s"%(str(dn)),base=basedn, scope=SCOPE_SUBTREE,controls=["search_options:1:2"])
-		delta = sam_ldb.msg_diff(empty,res[0])
+		reference = newsam_ldb.search(expression="dn=%s"%(str(dn)),base=basedn, scope=SCOPE_SUBTREE,controls=["search_options:1:2"])
+		delta = sam_ldb.msg_diff(empty,reference[0])
 		for att in hashAttrNotCopied.keys():
 			delta.remove(att)
 		for att in backlinked:
@@ -552,33 +560,42 @@ def check_diff_name(newpaths,paths,creds,session,basedn,names,ischema):
 
 	changed = 0
 	for dn in listPresent:
-		res = newsam_ldb.search(expression="dn=%s"%(str(dn)),base=basedn, scope=SCOPE_SUBTREE,controls=["search_options:1:2"])
-		res2 = sam_ldb.search(expression="dn=%s"%(str(dn)),base=basedn, scope=SCOPE_SUBTREE,controls=["search_options:1:2"])
-		delta = sam_ldb.msg_diff(res2[0],res[0])
+		reference = newsam_ldb.search(expression="dn=%s"%(str(dn)),base=basedn, scope=SCOPE_SUBTREE,controls=["search_options:1:2"])
+		current = sam_ldb.search(expression="dn=%s"%(str(dn)),base=basedn, scope=SCOPE_SUBTREE,controls=["search_options:1:2"])
+		if ((str(current[0].dn) != str(reference[0].dn)) and (str(current[0].dn).upper() == str(reference[0].dn).upper())):
+			message(CHANGE,"Name are the same but case change, let's rename %s to %s"%(str(current[0].dn),str(reference[0].dn)))
+			identic_rename(sam_ldb,reference[0].dn)
+			current = sam_ldb.search(expression="dn=%s"%(str(dn)),base=basedn, scope=SCOPE_SUBTREE,controls=["search_options:1:2"])
+
+		delta = sam_ldb.msg_diff(current[0],reference[0])
 		for att in hashAttrNotCopied.keys():
 			delta.remove(att)
 		for att in backlinked:
 			delta.remove(att)
 		delta.remove("parentGUID")
 		nb = 0
+		
 		for att in delta:
 			msgElt = delta.get(att)
 			if att == "dn":
 				continue
-			if handle_security_desc(ischema,att,msgElt,hashallSD,res2,res):
+			if att == "name":
+				delta.remove(att)
+				continue
+			if handle_security_desc(ischema,att,msgElt,hashallSD,current,reference):
 				delta.remove(att)
 				continue
 			if (not hashOverwrittenAtt.has_key(att) or not (hashOverwrittenAtt.get(att)&2^msgElt.flags())):
-				if  handle_special_case(att,delta,res,res2,ischema)==0 and msgElt.flags()!=ldb.FLAG_MOD_ADD:
+				if  handle_special_case(att,delta,reference,current,ischema)==0 and msgElt.flags()!=ldb.FLAG_MOD_ADD:
 					i = 0
 					if opts.debugchange:
 						message(CHANGE, "dn= "+str(dn)+ " "+att + " with flag "+str(msgElt.flags())+ " is not allowed to be changed/removed, I discard this change ...")
-						for e in range(0,len(res2[0][att])):
-							message(CHANGE,"old %d : %s"%(i,str(res2[0][att][e])))
+						for e in range(0,len(current[0][att])):
+							message(CHANGE,"old %d : %s"%(i,str(current[0][att][e])))
 						if msgElt.flags() == 2:
 							i = 0
-							for e in range(0,len(res[0][att])):
-								message(CHANGE,"new %d : %s"%(i,str(res[0][att][e])))
+							for e in range(0,len(reference[0][att])):
+								message(CHANGE,"new %d : %s"%(i,str(reference[0][att][e])))
 					delta.remove(att)
 		delta.dn = dn
 		if len(delta.items()) >1:
@@ -595,16 +612,16 @@ def check_diff_name(newpaths,paths,creds,session,basedn,names,ischema):
 def check_updated_sd(newpaths,paths,creds,session,names):
 	newsam_ldb = Ldb(newpaths.samdb, session_info=session, credentials=creds,lp=lp)
 	sam_ldb = Ldb(paths.samdb, session_info=session, credentials=creds,lp=lp)
-	res = newsam_ldb.search(expression="objectClass=*",base=str(names.rootdn), scope=SCOPE_SUBTREE,attrs=["dn","nTSecurityDescriptor"],controls=["search_options:1:2"])
-	res2 = sam_ldb.search(expression="objectClass=*",base=str(names.rootdn), scope=SCOPE_SUBTREE,attrs=["dn","nTSecurityDescriptor"],controls=["search_options:1:2"])
+	reference = newsam_ldb.search(expression="objectClass=*",base=str(names.rootdn), scope=SCOPE_SUBTREE,attrs=["dn","nTSecurityDescriptor"],controls=["search_options:1:2"])
+	current = sam_ldb.search(expression="objectClass=*",base=str(names.rootdn), scope=SCOPE_SUBTREE,attrs=["dn","nTSecurityDescriptor"],controls=["search_options:1:2"])
 	hash_new = {}
-	for i in range(0,len(res)):
-		hash_new[str(res[i]["dn"]).lower()] = ndr_unpack(security.descriptor,str(res[i]["nTSecurityDescriptor"])).as_sddl(names.domainsid)
+	for i in range(0,len(reference)):
+		hash_new[str(reference[i]["dn"]).lower()] = ndr_unpack(security.descriptor,str(reference[i]["nTSecurityDescriptor"])).as_sddl(names.domainsid)
 
-	for i in range(0,len(res2)):
-		key = str(res2[i]["dn"]).lower()
+	for i in range(0,len(current)):
+		key = str(current[i]["dn"]).lower()
 		if hash_new.has_key(key):
-			sddl = ndr_unpack(security.descriptor,str(res2[i]["nTSecurityDescriptor"])).as_sddl(names.domainsid)
+			sddl = ndr_unpack(security.descriptor,str(current[i]["nTSecurityDescriptor"])).as_sddl(names.domainsid)
 			if sddl != hash_new[key]:
 				print "%s new sddl/sddl in ref"%key
 				print "%s\n%s"%(sddl,hash_new[key])
@@ -762,12 +779,12 @@ newpaths = get_paths(targetdir=provisiondir)
 populate_backlink(newpaths,creds,session,names.schemadn)
 # Check the difference
 update_basesamdb(newpaths,paths,names)
-update_secrets(newpaths,paths,creds,session)
-update_privilege(newpaths,paths)
-update_machine_account_password(paths,creds,session,names)
 
 if opts.full:
 	update_samdb(newpaths,paths,creds,session,names)
+update_secrets(newpaths,paths,creds,session)
+update_privilege(newpaths,paths)
+update_machine_account_password(paths,creds,session,names)
 # SD should be created with admin but as some previous acl were so wrong that admin can't modify them we have first
 # to recreate them with the good form but with system account and then give the ownership to admin ...
 admin_session_info = admin_session(lp, str(names.domainsid))
diff --git a/source4/setup/schema-map-fedora-ds-1.0 b/source4/setup/schema-map-fedora-ds-1.0
index 4ed833f..34d48a0 100644
--- a/source4/setup/schema-map-fedora-ds-1.0
+++ b/source4/setup/schema-map-fedora-ds-1.0
@@ -33,6 +33,11 @@ sambaConfigOption
 2.16.840.1.113730.3.1.34:1.3.6.1.4.1.7165.4.255.1
 #defaultGroup has a conflicting OID
 1.2.840.113556.1.4.480:1.3.6.1.4.1.7165.4.255.2
+#thumbnailPhoto has a conflicting OID
+2.16.840.1.113730.3.1.35:1.3.6.1.4.1.7165.4.255.10
+#thumbnailLogo has a conflicting OID
+2.16.840.1.113730.3.1.36:1.3.6.1.4.1.7165.4.255.11
+
 #This large integer format is unimplemented in OpenLDAP 2.3
 1.2.840.113556.1.4.906:1.3.6.1.4.1.1466.115.121.1.27
 #This case insensitive string isn't available
diff --git a/source4/setup/schema_samba4.ldif b/source4/setup/schema_samba4.ldif
index 3216f4f..70ae5d8 100644
--- a/source4/setup/schema_samba4.ldif
+++ b/source4/setup/schema_samba4.ldif
@@ -195,6 +195,9 @@
 #Allocated: (dynamicObject) samba4DynamicObject: 1.3.6.1.4.1.7165.4.255.8
 #Allocated: (entryTTL) samba4EntryTTL: 1.3.6.1.4.1.7165.4.255.9
 
+#Allocated: (thumbnailPhoto) attributeID: 1.3.6.1.4.1.7165.4.255.10
+#Allocated: (thumbnailLogo) attributeID: 1.3.6.1.4.1.7165.4.255.11
+
 #
 # Based on domainDNS, but without the DNS bits.
 #


-- 
Samba Shared Repository


More information about the samba-cvs mailing list