1
0
mirror of https://github.com/samba-team/samba.git synced 2025-01-11 05:18:09 +03:00

r24262: 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
(This used to be commit 53c248c264)
This commit is contained in:
Andrew Bartlett 2007-08-07 05:58:47 +00:00 committed by Gerald (Jerry) Carter
parent 49c42e2550
commit ae7819d715
3 changed files with 13 additions and 9 deletions

View File

@ -161,7 +161,7 @@ static int objectclass_sort(struct ldb_module *module,
/* 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_sort(struct ldb_module *module,
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 @@ static int objectclass_add(struct ldb_module *module, struct ldb_request *req)
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);

View File

@ -4,7 +4,6 @@ objectClass: container
description: Container for SAM account templates
showInAdvancedViewOnly: TRUE
systemFlags: 2348810240
objectCategory: CN=Container,${SCHEMADN}
isCriticalSystemObject: TRUE
###
@ -30,7 +29,6 @@ primaryGroupID: 513
accountExpires: -1
logonCount: 0
sAMAccountType: 805306368
objectCategory: CN=Person,${SCHEMADN}
dn: CN=TemplateComputer,CN=Templates
objectClass: top
@ -50,7 +48,6 @@ primaryGroupID: 513
accountExpires: -1
logonCount: 0
sAMAccountType: 805306369
objectCategory: CN=Computer,${SCHEMADN}
dn: CN=TemplateTrustingDomain,CN=Templates
objectClass: top
@ -74,7 +71,6 @@ objectClass: Template
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: top
objectClass: Template
objectClass: foreignSecurityPrincipalTemplate
showInAdvancedViewOnly: TRUE
objectCategory: CN=Foreign-Security-Principal,${SCHEMADN}
dn: CN=TemplateSecret,CN=Templates
objectClass: top

View File

@ -46,7 +46,7 @@ dn: @MAP=samba3sam
@TO: sambaDomainName=TESTS," + s3.BASEDN + "
dn: @MODULES
@LIST: rootdse,paged_results,server_sort,extended_dn,asq,samldb,objectclass,password_hash,operational,objectguid,rdn_name,samba3sam,partition
@LIST: 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 @@ description: y
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 @@ description: y
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");