Handle dsdb_class_by_lDAPDisplayName returned values in schema_inferiors.c
authorAnatoliy Atanasov <anatoliy.atanasov@postpath.com>
Fri, 11 Sep 2009 15:57:34 +0000 (18:57 +0300)
committerAndrew Tridgell <tridge@samba.org>
Sat, 19 Sep 2009 22:42:44 +0000 (15:42 -0700)
source4/dsdb/schema/schema_inferiors.c

index 493b425b726d52d774a4333eb16984f8a3ef0376..b02d557c5884708de50da52db7c64c1c0e714092 100644 (file)
@@ -82,6 +82,10 @@ static char **schema_subclasses(struct dsdb_schema *schema, TALLOC_CTX *mem_ctx,
 
        for (i=0; oclist && oclist[i]; i++) {
                struct dsdb_class *schema_class = dsdb_class_by_lDAPDisplayName(schema, oclist[i]);
+               if (!schema_class) {
+                       DEBUG(0, ("ERROR: Unable to locate subClass: '%s'\n", oclist[i]));
+                       continue;
+               }
                list = str_list_append_const(list, schema_class->subclasses);
        }
        return list;
@@ -104,6 +108,10 @@ static char **schema_posssuperiors(struct dsdb_schema *schema,
                list3 = schema_supclasses(schema, schema_class);
                for (i=0; list3 && list3[i]; i++) {
                        struct dsdb_class *class2 = dsdb_class_by_lDAPDisplayName(schema, list3[i]);
+                       if (!class2) {
+                               DEBUG(0, ("ERROR: Unable to locate supClass: '%s'\n", list3[i]));
+                               continue;
+                       }
                        list2 = str_list_append_const(list2, schema_posssuperiors(schema, class2));
                }
                list2 = str_list_append_const(list2, schema_subclasses(schema, list2, list2));