Author: abartlet Date: 2007-08-07 05:58:47 +0000 (Tue, 07 Aug 2007) New Revision: 24262
WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=24262 Log: Set the objectCategory by default in the objectclass module, rather than using templates. Modify the samba3sam test to be less fussy, and not use the objectclass module (which requires proper schema stuff now). Andrew Bartlett Modified: branches/SAMBA_4_0/source/dsdb/samdb/ldb_modules/objectclass.c branches/SAMBA_4_0/source/setup/provision_templates.ldif branches/SAMBA_4_0/testprogs/ejs/samba3sam.js Changeset: Modified: branches/SAMBA_4_0/source/dsdb/samdb/ldb_modules/objectclass.c =================================================================== --- branches/SAMBA_4_0/source/dsdb/samdb/ldb_modules/objectclass.c 2007-08-07 04:29:42 UTC (rev 24261) +++ branches/SAMBA_4_0/source/dsdb/samdb/ldb_modules/objectclass.c 2007-08-07 05:58:47 UTC (rev 24262) @@ -161,7 +161,7 @@ /* Save the next pointer, as the DLIST_ macros will change poss_subclass->next */ next = poss_subclass->next; - if (ldb_attr_cmp(class->subClassOf, current->objectclass) == 0) { + if (class && ldb_attr_cmp(class->subClassOf, current->objectclass) == 0) { DLIST_REMOVE(unsorted, poss_subclass); DLIST_ADD(subclass, poss_subclass); @@ -199,6 +199,7 @@ static int objectclass_add(struct ldb_module *module, struct ldb_request *req) { struct ldb_message_element *objectclass_element; + const struct dsdb_schema *schema = dsdb_get_schema(module->ldb); struct class_list *sorted, *current; struct ldb_request *down_req; struct ldb_message *msg; @@ -265,6 +266,14 @@ talloc_free(mem_ctx); return ret; } + /* Last one */ + if (schema && !current->next && !ldb_msg_find_element(msg, "objectCategory")) { + const struct dsdb_class *objectclass + = dsdb_class_by_lDAPDisplayName(schema, current->objectclass); + if (objectclass) { + ldb_msg_add_string(msg, "objectCategory", objectclass->defaultObjectCategory); + } + } } talloc_free(mem_ctx); Modified: branches/SAMBA_4_0/source/setup/provision_templates.ldif =================================================================== --- branches/SAMBA_4_0/source/setup/provision_templates.ldif 2007-08-07 04:29:42 UTC (rev 24261) +++ branches/SAMBA_4_0/source/setup/provision_templates.ldif 2007-08-07 05:58:47 UTC (rev 24262) @@ -4,7 +4,6 @@ description: Container for SAM account templates showInAdvancedViewOnly: TRUE systemFlags: 2348810240 -objectCategory: CN=Container,${SCHEMADN} isCriticalSystemObject: TRUE ### @@ -30,7 +29,6 @@ accountExpires: -1 logonCount: 0 sAMAccountType: 805306368 -objectCategory: CN=Person,${SCHEMADN} dn: CN=TemplateComputer,CN=Templates objectClass: top @@ -50,7 +48,6 @@ accountExpires: -1 logonCount: 0 sAMAccountType: 805306369 -objectCategory: CN=Computer,${SCHEMADN} dn: CN=TemplateTrustingDomain,CN=Templates objectClass: top @@ -74,7 +71,6 @@ objectClass: groupTemplate groupType: -2147483646 sAMAccountType: 268435456 -objectCategory: CN=Group,${SCHEMADN} # Currently this isn't used, we don't have a way to detect it different from an incoming alias # @@ -92,7 +88,6 @@ objectClass: Template objectClass: foreignSecurityPrincipalTemplate showInAdvancedViewOnly: TRUE -objectCategory: CN=Foreign-Security-Principal,${SCHEMADN} dn: CN=TemplateSecret,CN=Templates objectClass: top Modified: branches/SAMBA_4_0/testprogs/ejs/samba3sam.js =================================================================== --- branches/SAMBA_4_0/testprogs/ejs/samba3sam.js 2007-08-07 04:29:42 UTC (rev 24261) +++ branches/SAMBA_4_0/testprogs/ejs/samba3sam.js 2007-08-07 05:58:47 UTC (rev 24262) @@ -46,7 +46,7 @@ @TO: sambaDomainName=TESTS," + s3.BASEDN + " dn: @MODULES [EMAIL PROTECTED]: rootdse,paged_results,server_sort,extended_dn,asq,samldb,objectclass,password_hash,operational,objectguid,rdn_name,samba3sam,partition [EMAIL PROTECTED]: rootdse,paged_results,server_sort,extended_dn,asq,samldb,password_hash,operational,objectguid,rdn_name,samba3sam,partition dn: @PARTITION partition: " + s4.BASEDN + ":" + s4.url + " @@ -482,7 +482,7 @@ assert(res.msgs[0].dnsHostName == "x"); assert(res.msgs[0].lastLogon == "x"); assert(res.msgs[0].objectClass != undefined); - assert(res.msgs[0].objectClass[3] == "user"); + assert(res.msgs[0].objectClass[0] == "user"); assert(res.msgs[1].dn == s4.dn("cn=A")); assert(res.msgs[1].dnsHostName == undefined); assert(res.msgs[1].lastLogon == "x"); @@ -504,7 +504,7 @@ assert(res.msgs[1].dnsHostName == "x"); assert(res.msgs[1].lastLogon == "x"); assert(res.msgs[1].objectClass != undefined); - assert(res.msgs[1].objectClass[3] == "user"); + assert(res.msgs[1].objectClass[0] == "user"); assert(res.msgs[2].dn == s4.dn("cn=A")); assert(res.msgs[2].dnsHostName == undefined); assert(res.msgs[2].lastLogon == "x");