]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/bconfig.c
Fix C errors
[openldap] / servers / slapd / bconfig.c
index 00f581e1644a4e36c1ffa0cf6d1b498af4dff445..c01ec584a51ef30757316ade1c5a0b337d663cc4 100644 (file)
@@ -3871,6 +3871,8 @@ config_rename_one( Operation *op, SlapReply *rs, Entry *e,
                op->o_callback = ≻
                op->orr_newrdn = *newrdn;
                op->orr_nnewrdn = *nnewrdn;
+               op->orr_newSup = NULL;
+               op->orr_nnewSup = NULL;
                op->orr_deleteoldrdn = 1;
                op->orr_modlist = NULL;
                slap_modrdn2mods( op, rs );
@@ -3994,6 +3996,10 @@ check_name_index( CfEntryInfo *parent, ConfigType ce_type, Entry *e,
                if ( ce->ce_type == ce_type ) nsibs++;
        }
 
+       /* account for -1 frontend */
+       if ( ce_type == Cft_Database )
+               nsibs--;
+
        if ( index != nsibs ) {
                if ( gotindex ) {
                        if ( index < nsibs ) {
@@ -4005,8 +4011,6 @@ check_name_index( CfEntryInfo *parent, ConfigType ce_type, Entry *e,
                }
                if ( !isfrontend && index == -1 ) {
                        index = nsibs;
-                       if ( ce_type == Cft_Database )
-                               index--;
                }
 
                /* just make index = nsibs */
@@ -4799,7 +4803,8 @@ config_modify_internal( CfEntryInfo *ce, Operation *op, SlapReply *rs,
                                        ca->valx = d->idx[i];
                                        rc = config_del_vals( ct, ca );
                                        if ( rc != LDAP_SUCCESS ) break;
-                                       s->a_flags |= SLAP_ATTR_IXDEL;
+                                       if ( s )
+                                               s->a_flags |= SLAP_ATTR_IXDEL;
                                        for (j=i+1; j < d->nidx; j++)
                                                if ( d->idx[j] >d->idx[i] )
                                                        d->idx[j]--;
@@ -4809,7 +4814,8 @@ config_modify_internal( CfEntryInfo *ce, Operation *op, SlapReply *rs,
                                ca->line = NULL;
                                rc = config_del_vals( ct, ca );
                                if ( rc ) rc = LDAP_OTHER;
-                               s->a_flags |= SLAP_ATTR_IXDEL;
+                               if ( s )
+                                       s->a_flags |= SLAP_ATTR_IXDEL;
                        }
                        if ( ml->sml_values ) {
                                d = d->next;
@@ -5323,9 +5329,9 @@ config_build_entry( Operation *op, SlapReply *rs, CfEntryInfo *parent,
        ce->ce_parent = parent;
        if ( parent ) {
                pdn = parent->ce_entry->e_nname;
-               if ( parent->ce_kids && parent->ce_kids->ce_type < ce->ce_type )
+               if ( parent->ce_kids )
                        for ( ceprev = parent->ce_kids; ceprev->ce_sibs &&
-                               ceprev->ce_type < ce->ce_type;
+                               ceprev->ce_type <= ce->ce_type;
                                ceprev = ceprev->ce_sibs );
        } else {
                BER_BVZERO( &pdn );