]> git.sur5r.net Git - openldap/commitdiff
ITS#6363
authorQuanah Gibson-Mount <quanah@openldap.org>
Tue, 17 Nov 2009 17:08:58 +0000 (17:08 +0000)
committerQuanah Gibson-Mount <quanah@openldap.org>
Tue, 17 Nov 2009 17:08:58 +0000 (17:08 +0000)
CHANGES
servers/slapd/bconfig.c
servers/slapd/config.c

diff --git a/CHANGES b/CHANGES
index fdeb73eabb278a98f56f2c1fc38ee8d572313f36..97413c43d0f9f8060483c2ce1997be406d77b8ca 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -9,6 +9,7 @@ OpenLDAP 2.4.20 Engineering
        Fixed liblutil constant (ITS#5909)
        Added slapd handling of hex server IDs (ITS#6297)
        Fixed slapd inclusion of ac/unistd.h (ITS#6342)
+       Fixed slapd configArgs initialization (ITS#6363)
        Fixed slapd debug handling of LDAP_DEBUG_ANY (ITS#6324)
        Fixed slapd termination for one level DNs (ITS#6338)
        Fixed slapd unused parameter (ITS#6356)
index f68a28f88d3449668bdd4c43a443fd93880eced6..90cd6229261de78f65fd8f013b43a82db06a2224 100644 (file)
@@ -4578,6 +4578,7 @@ schema_destroy_one( ConfigArgs *ca, ConfigOCs **colst, int nocs,
 
        ca->valx = -1;
        ca->line = NULL;
+       ca->argc = 1;
        if ( cfn->c_cr_head ) {
                struct berval bv = BER_BVC("olcDitContentRules");
                ad = NULL;
@@ -5393,6 +5394,7 @@ config_modify_internal( CfEntryInfo *ce, Operation *op, SlapReply *rs,
                                        }
                                        ca->line = bv.bv_val;
                                        ca->valx = d->idx[i];
+                                       config_parse_vals(ct, ca, d->idx[i] );
                                        rc = config_del_vals( ct, ca );
                                        if ( rc != LDAP_SUCCESS ) break;
                                        if ( s )
@@ -5404,6 +5406,7 @@ config_modify_internal( CfEntryInfo *ce, Operation *op, SlapReply *rs,
                        } else {
                                ca->valx = -1;
                                ca->line = NULL;
+                               ca->argc = 1;
                                rc = config_del_vals( ct, ca );
                                if ( rc ) rc = LDAP_OTHER;
                                if ( s )
@@ -5450,6 +5453,7 @@ out:
                                        a->a_flags &= ~(SLAP_ATTR_IXDEL|SLAP_ATTR_IXADD);
                                        ca->valx = -1;
                                        ca->line = NULL;
+                                       ca->argc = 1;
                                        config_del_vals( ct, ca );
                                }
                                for ( i=0; !BER_BVISNULL( &s->a_vals[i] ); i++ ) {
@@ -5464,6 +5468,7 @@ out:
                                ct = config_find_table( colst, nocs, a->a_desc, ca );
                                ca->valx = -1;
                                ca->line = NULL;
+                               ca->argc = 1;
                                config_del_vals( ct, ca );
                                s = attr_find( save_attrs, a->a_desc );
                                if ( s ) {
index 22e1e982aa26c851912cabc1422cab5a85a39ed2..be5a2f7aeea8972f8125fd4d17bf2bea12bcaa48 100644 (file)
@@ -414,6 +414,7 @@ config_del_vals(ConfigTable *cf, ConfigArgs *c)
 
        /* If there is no handler, just ignore it */
        if ( cf->arg_type & ARG_MAGIC ) {
+               c->argv[0] = cf->ad->ad_cname.bv_val;
                c->op = LDAP_MOD_DELETE;
                c->type = cf->arg_type & ARGS_USERLAND;
                rc = (*((ConfigDriver*)cf->arg_item))(c);