]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/overlays/memberof.c
ITS#5484,ITS#5451
[openldap] / servers / slapd / overlays / memberof.c
index 0dec9c86ed2396fe3cd2ad37133b4fd0272032cf..09edce82b7f6f662703849bf90c0132c9c61f8a2 100644 (file)
@@ -194,7 +194,7 @@ memberof_saved_member_free( void *key, void *data )
 static BerVarray
 memberof_saved_member_get( Operation *op, void *keyp )
 {
-       BerVarray       vals;
+       void            *vals;
        BerVarray       *key = (BerVarray *)keyp;
 
        assert( op != NULL );
@@ -204,10 +204,8 @@ memberof_saved_member_get( Operation *op, void *keyp )
                *key = NULL;
 
        } else {
-               ldap_pvt_thread_pool_getkey( op->o_threadctx,
-                               key, (void **)&vals, NULL );
                ldap_pvt_thread_pool_setkey( op->o_threadctx,
-                               key, NULL, NULL );
+                               key, NULL, 0, &vals, NULL );
        }
 
        return vals;
@@ -232,9 +230,9 @@ memberof_saved_member_set( Operation *op, void *keyp, BerVarray vals )
                *key = saved_vals;
 
        } else {
-               BerVarray       old_vals = NULL;
+               void    *old_vals = NULL;
 
-               ldap_pvt_thread_pool_setkey_x( op->o_threadctx, key,
+               ldap_pvt_thread_pool_setkey( op->o_threadctx, key,
                                saved_vals, memberof_saved_member_free, &old_vals, NULL );
                if ( old_vals != NULL ) {
                        ber_bvarray_free( old_vals );
@@ -472,8 +470,10 @@ memberof_value_modify(
                        char buf[ SLAP_TEXT_BUFLEN ];
                        snprintf( buf, sizeof( buf ),
                                "memberof_value_modify %s=\"%s\" failed err=%d text=%s",
-                               ad->ad_cname.bv_val, new_dn->bv_val, rs2.sr_err, rs2.sr_text );
-                       Debug( LDAP_DEBUG_ANY, "%s: %s\n", op->o_log_prefix, buf, 0 );
+                               ad->ad_cname.bv_val, new_dn->bv_val, rs2.sr_err,
+                               rs2.sr_text ? rs2.sr_text : "" );
+                       Debug( LDAP_DEBUG_ANY, "%s: %s\n",
+                               op->o_log_prefix, buf, 0 );
                }
 
                assert( op2.orm_modlist == &mod[ mcnt ] );
@@ -486,6 +486,8 @@ memberof_value_modify(
                if ( ml != NULL ) {
                        slap_mods_free( ml, 1 );
                }
+
+               mod[ 0 ].sml_next = NULL;
        }
 
        if ( old_ndn != NULL ) {
@@ -503,8 +505,10 @@ memberof_value_modify(
                        char buf[ SLAP_TEXT_BUFLEN ];
                        snprintf( buf, sizeof( buf ),
                                "memberof_value_modify %s=\"%s\" failed err=%d text=%s",
-                               ad->ad_cname.bv_val, old_dn->bv_val, rs2.sr_err, rs2.sr_text );
-                       Debug( LDAP_DEBUG_ANY, "%s: %s\n", op->o_log_prefix, buf, 0 );
+                               ad->ad_cname.bv_val, old_dn->bv_val, rs2.sr_err,
+                               rs2.sr_text ? rs2.sr_text : "" );
+                       Debug( LDAP_DEBUG_ANY, "%s: %s\n",
+                               op->o_log_prefix, buf, 0 );
                }
 
                assert( op2.orm_modlist == &mod[ mcnt ] );
@@ -1509,7 +1513,7 @@ memberof_db_init(
        ConfigReply     *cr )
 {
        slap_overinst   *on = (slap_overinst *)be->bd_info;
-       memberof_t      tmp_mo = { 0 }, *mo;
+       memberof_t              *mo;
 
        mo = (memberof_t *)ch_calloc( 1, sizeof( memberof_t ) );