From 3671c9e99179b22b42acb61bfa751ab93714fdd2 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Thu, 10 Sep 2009 12:06:20 +1000 Subject: s4/schema: don't crash if we don't have subClassOf --- source4/dsdb/schema/schema_inferiors.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'source4/dsdb') diff --git a/source4/dsdb/schema/schema_inferiors.c b/source4/dsdb/schema/schema_inferiors.c index 63ddb4a424..b0ecc08600 100644 --- a/source4/dsdb/schema/schema_inferiors.c +++ b/source4/dsdb/schema/schema_inferiors.c @@ -49,7 +49,8 @@ static char **schema_supclasses(struct dsdb_schema *schema, struct dsdb_class *s } /* Cope with 'top SUP top', ie top is subClassOf top */ - if (strcmp(schema_class->lDAPDisplayName, schema_class->subClassOf) == 0) { + if (schema_class->subClassOf && + strcmp(schema_class->lDAPDisplayName, schema_class->subClassOf) == 0) { schema_class->supclasses = list; return list; } @@ -132,7 +133,11 @@ static void schema_create_subclasses(struct dsdb_schema *schema) for (schema_class=schema->classes; schema_class; schema_class=schema_class->next) { struct dsdb_class *schema_class2 = dsdb_class_by_lDAPDisplayName(schema, schema_class->subClassOf); - if (schema_class != schema_class2) { + if (schema_class2 == NULL) { + DEBUG(0,("ERROR: no subClassOf for '%s'\n", schema_class->lDAPDisplayName)); + continue; + } + if (schema_class2 && schema_class != schema_class2) { if (schema_class2->subclasses_direct == NULL) { schema_class2->subclasses_direct = str_list_make_empty(schema_class2); } -- cgit