]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/config.c
ITS#3773 additional fix
[openldap] / servers / slapd / config.c
index 0627cc8c36b65107b37d192af44ea7360a301718..b446dcc4ca7ae7705e45f9979ecb8879ecca5b9d 100644 (file)
@@ -686,18 +686,6 @@ read_config_file(const char *fname, int depth, ConfigArgs *cf, ConfigTable *cft)
                }
        }
 
-       if ( BER_BVISNULL( &frontendDB->be_schemadn ) ) {
-               ber_str2bv( SLAPD_SCHEMA_DN, STRLENOF( SLAPD_SCHEMA_DN ), 1,
-                       &frontendDB->be_schemadn );
-               rc = dnNormalize( 0, NULL, NULL, &frontendDB->be_schemadn, &frontendDB->be_schemandn, NULL );
-               if ( rc != LDAP_SUCCESS ) {
-                       Debug(LDAP_DEBUG_ANY, "%s: "
-                               "unable to normalize default schema DN \"%s\"\n",
-                               c->log, frontendDB->be_schemadn.bv_val, 0 );
-                       /* must not happen */
-                       assert( 0 );
-               }
-       }
        rc = 0;
 
 leave:
@@ -731,6 +719,9 @@ verbs_to_mask(int argc, char *argv[], slap_verbmasks *v, slap_mask_t *m) {
        return(0);
 }
 
+/* Mask keywords that represent multiple bits should occur before single
+ * bit keywords in the verbmasks array.
+ */
 int
 mask_to_verbs(slap_verbmasks *v, slap_mask_t m, BerVarray *bva) {
        int i;
@@ -740,6 +731,8 @@ mask_to_verbs(slap_verbmasks *v, slap_mask_t m, BerVarray *bva) {
                if (!v[i].mask) continue;
                if (( m & v[i].mask ) == v[i].mask ) {
                        value_add_one( bva, &v[i].word );
+                       m ^= v[i].mask;
+                       if ( !m ) break;
                }
        }
        return 0;