]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/limits.c
Fix previous commit
[openldap] / servers / slapd / limits.c
index 0154626903e4836f0ffbf0f8b578b7c16aae45ab..d9088ca8ac9a90b094dc8c67ee52b8f984017aa5 100644 (file)
@@ -40,7 +40,7 @@ get_limits(
                        if ( ndn->bv_len == 0 ) {
                                break;
                        }
-                       if ( strcmp( lm[0]->lm_dn_pat.bv_val, ndn->bv_val ) == 0 ) {
+                       if ( dn_match( &lm[0]->lm_dn_pat, ndn ) ) {
                                *limit = &lm[0]->lm_limits;
                                return( 0 );
                        }
@@ -68,15 +68,14 @@ get_limits(
                                }
                        } else {
                                /* check for unescaped rdn separator */
-                               if ( !DN_SEPARATOR( ndn->bv_val[d-1] )
-                                       || DN_ESCAPE( ndn->bv_val[d-2] ) )
-                               {
+                               if ( !DN_SEPARATOR( ndn->bv_val[d-1] ) ) {
                                        break;
                                }
                        }
 
                        /* in case of (sub)match ... */
-                       if ( strcmp( lm[0]->lm_dn_pat.bv_val, &ndn->bv_val[d] ) == 0 ) {
+                       if ( lm[0]->lm_dn_pat.bv_len == ( ndn->bv_len - d )
+                                       && strcmp( lm[0]->lm_dn_pat.bv_val, &ndn->bv_val[d] ) == 0 ) {
                                /* check for exactly one rdn in case of ONE */
                                if ( lm[0]->lm_type == SLAP_LIMITS_ONE ) {
                                        /*