]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/mr.c
Patch: Delete the buggy surrogate parent code (ITS#1815)
[openldap] / servers / slapd / mr.c
index 5168cba256af688d6064b6ea7c2314642aa69b22..069b72b370f685df24595810b1df211e6440d566 100644 (file)
@@ -382,21 +382,10 @@ matching_rule_use_init( void )
 
                at = NULL;
                for ( at_start( &at ); at; at_next( &at ) ) {
-                       if( mr->smr_usage & SLAP_MR_EXT && ( 
-                               mr->smr_syntax == at->sat_syntax ||
-                               mr == at->sat_equality ||
-                               mr == at->sat_approx ) )
-                       {
-                               ldap_charray_add( &applies_oids, at->sat_cname.bv_val );
+                       if( at->sat_flags & SLAP_AT_HIDE ) continue;
 
-                       } else if ( mr->smr_compat_syntaxes ) {
-                               int i;
-                               for( i=0; mr->smr_compat_syntaxes[i]; i++ ) {
-                                       if( at->sat_syntax == mr->smr_compat_syntaxes[i] ) {
-                                               ldap_charray_add( &applies_oids, at->sat_cname.bv_val );
-                                               break;
-                                       }
-                               }
+                       if( mr_usable_with_at( mr, at )) {
+                               ldap_charray_add( &applies_oids, at->sat_cname.bv_val );
                        }
                }
 
@@ -436,8 +425,27 @@ matching_rule_use_init( void )
        return( 0 );
 }
 
+int mr_usable_with_at(
+       MatchingRule *mr,
+       AttributeType *at )
+{
+       if( mr->smr_usage & SLAP_MR_EXT && ( 
+               mr->smr_syntax == at->sat_syntax ||
+               mr == at->sat_equality || mr == at->sat_approx ) )
+       {
+               return 1;
+       }
 
-#if defined( SLAPD_SCHEMA_DN )
+       if ( mr->smr_compat_syntaxes ) {
+               int i;
+               for( i=0; mr->smr_compat_syntaxes[i]; i++ ) {
+                       if( at->sat_syntax == mr->smr_compat_syntaxes[i] ) {
+                               return 1;
+                       }
+               }
+       }
+       return 0;
+}
 
 int mr_schema_info( Entry *e )
 {
@@ -496,5 +504,3 @@ int mru_schema_info( Entry *e )
        }
        return 0;
 }
-
-#endif