]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/overlays/memberof.c
Tweaks for OpenSSL 1.1 API deprecations
[openldap] / servers / slapd / overlays / memberof.c
index 3f07ffb52194f3277f9bb55372ec5653617be5fe..40ad6e274a8ed71d5596799e631544bb1e02b451 100644 (file)
@@ -190,7 +190,16 @@ typedef struct memberof_cbinfo_t {
        BerVarray memberof;
        memberof_is_t what;
 } memberof_cbinfo_t;
-       
+
+static void
+memberof_set_backend( Operation *op_target, Operation *op, slap_overinst *on )
+{
+    BackendInfo *bi = op->o_bd->bd_info;
+
+    if ( bi->bi_type == memberof.on_bi.bi_type )
+        op_target->o_bd->bd_info = (BackendInfo *)on->on_info;
+}
+
 static int
 memberof_isGroupOrMember_cb( Operation *op, SlapReply *rs )
 {
@@ -284,8 +293,9 @@ memberof_isGroupOrMember( Operation *op, memberof_cbinfo_t *mci )
                an[ 0 ].an_name = an[ 0 ].an_desc->ad_cname;
                op2.ors_filterstr = mo->mo_groupFilterstr;
                op2.ors_filter = &mo->mo_groupFilter;
+               op2.o_do_not_cache = 1; /* internal search, don't log */
 
-               op2.o_bd->bd_info = (BackendInfo *)on->on_info;
+               memberof_set_backend( &op2, op, on );
                (void)op->o_bd->be_search( &op2, &rs2 );
                op2.o_bd->bd_info = bi;
 
@@ -306,8 +316,9 @@ memberof_isGroupOrMember( Operation *op, memberof_cbinfo_t *mci )
                an[ 0 ].an_name = an[ 0 ].an_desc->ad_cname;
                op2.ors_filterstr = mo->mo_memberFilterstr;
                op2.ors_filter = &mo->mo_memberFilter;
+               op2.o_do_not_cache = 1; /* internal search, don't log */
 
-               op2.o_bd->bd_info = (BackendInfo *)on->on_info;
+               memberof_set_backend( &op2, op, on );
                (void)op->o_bd->be_search( &op2, &rs2 );
                op2.o_bd->bd_info = bi;
 
@@ -409,7 +420,7 @@ memberof_value_modify(
 
                oex.oe_key = (void *)&memberof;
                LDAP_SLIST_INSERT_HEAD(&op2.o_extra, &oex, oe_next);
-               op2.o_bd->bd_info = (BackendInfo *)on->on_info;
+               memberof_set_backend( &op2, op, on );
                (void)op->o_bd->be_modify( &op2, &rs2 );
                op2.o_bd->bd_info = bi;
                LDAP_SLIST_REMOVE(&op2.o_extra, &oex, OpExtra, oe_next);
@@ -451,7 +462,7 @@ memberof_value_modify(
 
                oex.oe_key = (void *)&memberof;
                LDAP_SLIST_INSERT_HEAD(&op2.o_extra, &oex, oe_next);
-               op2.o_bd->bd_info = (BackendInfo *)on->on_info;
+               memberof_set_backend( &op2, op, on );
                (void)op->o_bd->be_modify( &op2, &rs2 );
                op2.o_bd->bd_info = bi;
                LDAP_SLIST_REMOVE(&op2.o_extra, &oex, OpExtra, oe_next);
@@ -600,6 +611,7 @@ memberof_op_add( Operation *op, SlapReply *rs )
                                                ber_memfree( a->a_nvals[ i ].bv_val );
                                                BER_BVZERO( &a->a_nvals[ i ] );
                                        }
+                                       a->a_numvals--;
                                        if ( j - i == 1 ) {
                                                break;
                                        }
@@ -611,7 +623,6 @@ memberof_op_add( Operation *op, SlapReply *rs )
                                                        sizeof( struct berval ) * ( j - i ) );
                                        }
                                        i--;
-                                       a->a_numvals--;
                                }
                        }
 
@@ -726,6 +737,7 @@ memberof_op_add( Operation *op, SlapReply *rs )
        sc->sc_private = sc+1;
        sc->sc_response = memberof_res_add;
        sc->sc_cleanup = memberof_cleanup;
+       sc->sc_writewait = 0;
        mci = sc->sc_private;
        mci->on = on;
        mci->member = NULL;
@@ -760,6 +772,7 @@ memberof_op_delete( Operation *op, SlapReply *rs )
        sc->sc_private = sc+1;
        sc->sc_response = memberof_res_delete;
        sc->sc_cleanup = memberof_cleanup;
+       sc->sc_writewait = 0;
        mci = sc->sc_private;
        mci->on = on;
        mci->member = NULL;
@@ -871,7 +884,6 @@ memberof_op_modify( Operation *op, SlapReply *rs )
                                        assert( ml->sml_nvalues != NULL );
                
                                        for ( i = 0; !BER_BVISNULL( &ml->sml_nvalues[ i ] ); i++ ) {
-                                               int             rc;
                                                Entry           *e;
                
                                                /* ITS#6670 Ignore member pointing to this entry */
@@ -1179,6 +1191,7 @@ done2:;
        sc->sc_private = sc+1;
        sc->sc_response = memberof_res_modify;
        sc->sc_cleanup = memberof_cleanup;
+       sc->sc_writewait = 0;
        mci = sc->sc_private;
        mci->on = on;
        mci->member = NULL;
@@ -1224,6 +1237,7 @@ memberof_op_modrdn( Operation *op, SlapReply *rs )
        sc->sc_private = sc+1;
        sc->sc_response = memberof_res_modrdn;
        sc->sc_cleanup = memberof_cleanup;
+       sc->sc_writewait = 0;
        mci = sc->sc_private;
        mci->on = on;
        mci->member = NULL;