]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/oc.c
ITS#1716 is_entry_subentr/ies/y/
[openldap] / servers / slapd / oc.c
index 3a4c48d2c5940a28bfcb485a84f7a7f4f5f1aabf..7163f1aa5f025eb2504e9e251c5563cd548230e6 100644 (file)
 #include "ldap_pvt.h"
 
 int is_object_subclass(
-       ObjectClass *sub,
-       ObjectClass *sup )
+       ObjectClass *sup,
+       ObjectClass *sub )
 {
        int i;
 
        if( sub == NULL || sup == NULL ) return 0;
 
-#if 0
+#if 1
        Debug( LDAP_DEBUG_TRACE, "is_object_subclass(%s,%s) %d\n",
-               sub->soc_oid, sup->soc_oid, sup == sub );
+               sup->soc_oid, sub->soc_oid, sup == sub );
 #endif
 
        if( sup == sub ) {
                return 1;
        }
 
-       if( sup->soc_sups == NULL ) {
+       if( sub->soc_sups == NULL ) {
                return 0;
        }
 
-       for( i=0; sup->soc_sups[i] != NULL; i++ ) {
-               if( is_object_subclass( sub, sup->soc_sups[i] ) ) {
+       for( i=0; sub->soc_sups[i] != NULL; i++ ) {
+               if( is_object_subclass( sup, sub->soc_sups[i] ) ) {
                        return 1;
                }
        }
@@ -92,8 +92,10 @@ int is_entry_objectclass(
                if ( objectClass == oc && !set_flags ) {
                        return 1;
                }
-
-               e->e_ocflags |= objectClass->soc_flags;
+               
+               if ( objectClass != NULL ) {
+                       e->e_ocflags |= objectClass->soc_flags;
+               }
        }
        e->e_ocflags |= SLAP_OC__END;   /* We've finished this */