]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/limits.c
Update copyright statements
[openldap] / servers / slapd / limits.c
index 85033305164d7be3b59ee5ad6d0cb6f611e224e6..0154626903e4836f0ffbf0f8b578b7c16aae45ab 100644 (file)
@@ -1,6 +1,6 @@
 /* limits.c - routines to handle regex-based size and time limits */
 /*
- * Copyright 1998-2000 The OpenLDAP Foundation, All Rights Reserved.
+ * Copyright 1998-2002 The OpenLDAP Foundation, All Rights Reserved.
  * COPYING RESTRICTIONS APPLY, see COPYRIGHT 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 ( strcmp( lm[0]->lm_dn_pat.bv_val, ndn->bv_val ) == 0 ) {
                                *limit = &lm[0]->lm_limits;
                                return( 0 );
                        }
@@ -55,7 +55,7 @@ get_limits(
                                break;
                        }
 
-                       d = ndn->bv_len - lm[0]->lm_dn_pat->bv_len;
+                       d = ndn->bv_len - lm[0]->lm_dn_pat.bv_len;
                        /* ndn shorter than dn_pat */
                        if ( d < 0 ) {
                                break;
@@ -76,14 +76,14 @@ get_limits(
                        }
 
                        /* in case of (sub)match ... */
-                       if ( strcmp( lm[0]->lm_dn_pat->bv_val, &ndn->bv_val[d] ) == 0 ) {
+                       if ( 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 ) {
                                        /*
                                         * if ndn is more that one rdn
                                         * below dn_pat, continue
                                         */
-                                       if ( (size_t) dn_rdnlen( NULL, ndn->bv_val ) != d - 1 ) {
+                                       if ( (size_t) dn_rdnlen( NULL, ndn ) != d - 1 ) {
                                                break;
                                        }
                                }
@@ -157,9 +157,8 @@ add_limits(
                        struct berval bv;
                        bv.bv_val = (char *) pattern;
                        bv.bv_len = strlen( pattern );
-                       lm->lm_dn_pat = NULL;
 
-                       rc = dnNormalize( NULL, &bv, &lm->lm_dn_pat );
+                       rc = dnNormalize2( NULL, &bv, &lm->lm_dn_pat );
                        if ( rc != LDAP_SUCCESS ) {
                                ch_free( lm );
                                return( -1 );
@@ -170,10 +169,10 @@ add_limits(
        case SLAP_LIMITS_REGEX:
        case SLAP_LIMITS_UNDEFINED:
                lm->lm_type = SLAP_LIMITS_REGEX;
-               lm->lm_dn_pat = ber_bvstrdup( pattern );
-               if ( regcomp( &lm->lm_dn_regex, lm->lm_dn_pat->bv_val, 
+               ber_str2bv( pattern, 0, 1, &lm->lm_dn_pat );
+               if ( regcomp( &lm->lm_dn_regex, lm->lm_dn_pat.bv_val, 
                                        REG_EXTENDED | REG_ICASE ) ) {
-                       ber_bvfree( lm->lm_dn_pat );
+                       free( lm->lm_dn_pat.bv_val );
                        ch_free( lm );
                        return( -1 );
                }
@@ -182,7 +181,8 @@ add_limits(
        case SLAP_LIMITS_ANONYMOUS:
        case SLAP_LIMITS_USERS:
                lm->lm_type = type;
-               lm->lm_dn_pat = NULL;
+               lm->lm_dn_pat.bv_val = NULL;
+               lm->lm_dn_pat.bv_len = 0;
                break;
        }