]> git.sur5r.net Git - openldap/commitdiff
ITS#5960
authorQuanah Gibson-Mount <quanah@openldap.org>
Fri, 20 Feb 2009 01:14:30 +0000 (01:14 +0000)
committerQuanah Gibson-Mount <quanah@openldap.org>
Fri, 20 Feb 2009 01:14:30 +0000 (01:14 +0000)
CHANGES
servers/slapd/overlays/rwm.c

diff --git a/CHANGES b/CHANGES
index a630ba93c08728bb7bdecf780e95440817db9825..5e0e502184526b17004289330e757dccdf2bf362 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -8,6 +8,7 @@ OpenLDAP 2.4.15 Release (2009/02/19)
        Fixed slapd-meta with entries with invalid attrs (ITS#5959)
        Fixed slapo-pcache caching invalid entries (ITS#5927)
        Fixed slapo-rwm objectClass preservation (ITS#5760)
+       Fixed slapo-rwm rwm_bva_rewrite handling (ITS#5960)
        Build Environment
                Fixed tester library linking for windows (ITS#5740)
 
index f0d93ed27ab5410e268d7587f4305a17314335b6..e10ee7fa134f0915bf9fe4325b39628e84a38267 100644 (file)
@@ -2162,7 +2162,7 @@ rwm_cf_gen( ConfigArgs *c )
                        ConfigArgs ca = { 0 };
                        int i, last;
 
-                       for ( last = 0; !BER_BVISNULL( &rwmap->rwm_bva_rewrite[ last ] ); last++ )
+                       for ( last = 0; rwmap->rwm_bva_rewrite && !BER_BVISNULL( &rwmap->rwm_bva_rewrite[ last ] ); last++ )
                                /* count'em */ ;
 
                        if ( c->valx > last ) {
@@ -2218,7 +2218,7 @@ rwm_cf_gen( ConfigArgs *c )
                                return 1;
                        }
 
-                       for ( i = c->valx; !BER_BVISNULL( &rwmap->rwm_bva_rewrite[ i ] ); i++ )
+                       for ( i = c->valx; rwmap->rwm_bva_rewrite && !BER_BVISNULL( &rwmap->rwm_bva_rewrite[ i ] ); i++ )
                        {
                                ca.line = rwmap->rwm_bva_rewrite[ i ].bv_val;
                                ca.argc = 0;
@@ -2245,6 +2245,7 @@ rwm_cf_gen( ConfigArgs *c )
 
                        rwmap->rwm_bva_rewrite = ch_realloc( rwmap->rwm_bva_rewrite,
                                ( last + 2 )*sizeof( struct berval ) );
+                       BER_BVZERO( &rwmap->rwm_bva_rewrite[last+1] );
 
                        for ( i = last - 1; i >= c->valx; i-- )
                        {
@@ -2369,7 +2370,8 @@ rwm_db_destroy(
 
                if ( rwmap->rwm_rw ) {
                        rewrite_info_delete( &rwmap->rwm_rw );
-                       ber_bvarray_free( rwmap->rwm_bva_rewrite );
+                       if ( rwmap->rwm_bva_rewrite )
+                               ber_bvarray_free( rwmap->rwm_bva_rewrite );
                }
 
                avl_free( rwmap->rwm_oc.remap, rwm_mapping_dst_free );