Merge branch 'its10440' into 'master'

ITS#10440: clear incoming controls where it doesn't make sense to pass them

See merge request openldap/openldap!830
This commit is contained in:
Ondřej Kuzník 2026-02-10 16:54:51 +00:00
commit 1b713eadb0
7 changed files with 28 additions and 0 deletions

View file

@ -137,6 +137,8 @@ autogroup_add_member_to_group( Operation *op, BerValue *dn, BerValue *ndn, autog
modlist->sml_flags = SLAP_MOD_INTERNAL;
modlist->sml_next = NULL;
memset( o.o_ctrlflag, 0, sizeof(o.o_ctrlflag) );
o.o_opid = 0; /* shared with op, saved above */
o.o_tag = LDAP_REQ_MODIFY;
o.o_callback = &cb;
@ -194,6 +196,8 @@ autogroup_add_member_values_to_group( Operation *op, struct berval *dn, autogrou
modlist.sml_flags = SLAP_MOD_INTERNAL;
modlist.sml_next = NULL;
memset( o.o_ctrlflag, 0, sizeof(o.o_ctrlflag) );
o.o_opid = 0;
o.o_tag = LDAP_REQ_MODIFY;
o.o_callback = &cb;
@ -268,6 +272,8 @@ autogroup_delete_member_from_group( Operation *op, BerValue *dn, BerValue *ndn,
modlist->sml_flags = SLAP_MOD_INTERNAL;
modlist->sml_next = NULL;
memset( o.o_ctrlflag, 0, sizeof(o.o_ctrlflag) );
o.o_opid = 0;
o.o_callback = &cb;
o.o_tag = LDAP_REQ_MODIFY;
@ -325,6 +331,8 @@ autogroup_delete_member_values_from_group( Operation *op, struct berval *dn, aut
modlist.sml_flags = SLAP_MOD_INTERNAL;
modlist.sml_next = NULL;
memset( o.o_ctrlflag, 0, sizeof(o.o_ctrlflag) );
o.o_opid = 0;
o.o_tag = LDAP_REQ_MODIFY;
o.o_callback = &cb;
@ -510,6 +518,8 @@ autogroup_add_members_from_filter( Operation *op, Entry *e, autogroup_entry_t *a
if ( op->o_abandon && !modify )
return 0;
memset( o.o_ctrlflag, 0, sizeof(o.o_ctrlflag) );
o.ors_attrsonly = 0;
o.o_tag = LDAP_REQ_SEARCH;
@ -559,6 +569,7 @@ autogroup_add_members_from_filter( Operation *op, Entry *e, autogroup_entry_t *a
rs_reinit( &rs, REP_RESULT );
o = *op;
o.o_opid = 0;
o.o_callback = &null_cb;
o.o_tag = LDAP_REQ_MODIFY;
@ -567,6 +578,8 @@ autogroup_add_members_from_filter( Operation *op, Entry *e, autogroup_entry_t *a
o.o_ndn = op->o_bd->be_rootndn;
o.o_req_dn = age->age_dn;
o.o_req_ndn = age->age_ndn;
memset( o.o_ctrlflag, 0, sizeof(o.o_ctrlflag) );
o.o_relax = SLAP_CONTROL_CRITICAL;
o.o_managedsait = SLAP_CONTROL_NONCRITICAL;
o.o_permissive_modify = 1;

View file

@ -686,6 +686,7 @@ constraint_violation( constraint *c, struct berval *bv, Operation *op )
}
nop.o_do_not_cache = 1;
nop.o_callback = &cb;
memset( nop.o_ctrlflag, 0, sizeof(nop.o_ctrlflag) );
nop.ors_scope = c->lud->lud_scope;
nop.ors_deref = LDAP_DEREF_NEVER;

View file

@ -292,6 +292,8 @@ memberof_isGroupOrMember( Operation *op, memberof_cbinfo_t *mci )
op2.ors_slimit = 1;
op2.ors_tlimit = SLAP_NO_LIMIT;
memset( op2.o_ctrlflag, 0, sizeof(op2.o_ctrlflag) );
if ( mci->what & MEMBEROF_IS_GROUP ) {
SlapReply rs2 = { REP_RESULT };
@ -389,6 +391,8 @@ memberof_value_modify(
op2.orm_no_opattrs = 1;
op2.o_dont_replicate = 1;
memset( op2.o_ctrlflag, 0, sizeof(op2.o_ctrlflag) );
/* main op has already completed if we got here, so even
* if its abandon flag was set we must complete as well. */
op2.o_abandon = 0;
@ -568,6 +572,8 @@ memberof_addcheck( Operation *op )
mo_addcheck_t ma;
SlapReply rs = {REP_SEARCH};
memset( o.o_ctrlflag, 0, sizeof(o.o_ctrlflag) );
o.o_dn = op->o_bd->be_rootdn;
o.o_ndn = op->o_bd->be_rootndn;
o.o_bd->bd_info = (BackendInfo *)on->on_info;

View file

@ -399,6 +399,7 @@ nestgroup_memberFilter( Operation *op, int mbr_nf, nestgroup_filterinst_t *mbr_f
Operation o = *op;
int i;
memset( o.o_ctrlflag, 0, sizeof(o.o_ctrlflag) );
o.o_managedsait = SLAP_CONTROL_CRITICAL;
sc = op->o_tmpcalloc( 1, sizeof(slap_callback) + sizeof(gdn_info), op->o_tmpmemctx);
gi = (gdn_info *)(sc+1);
@ -580,6 +581,7 @@ nestgroup_memberOfVals( Operation *op, slap_overinst *on, Attribute *a )
AttributeAssertion mava;
int i;
memset( o.o_ctrlflag, 0, sizeof(o.o_ctrlflag) );
o.o_managedsait = SLAP_CONTROL_CRITICAL;
sc = op->o_tmpcalloc( 1, sizeof(slap_callback) + sizeof(gdn_info), op->o_tmpmemctx);
gi = (gdn_info *)(sc+1);

View file

@ -253,6 +253,7 @@ retcode_op_internal( Operation *op, SlapReply *rs )
op2.ors_limit = NULL;
op2.ors_attrsonly = 0;
op2.ors_attrs = slap_anlist_all_attributes;
memset( op2.o_ctrlflag, 0, sizeof(op2.o_ctrlflag) );
ber_str2bv_x( "(objectClass=errAbsObject)",
STRLENOF( "(objectClass=errAbsObject)" ),

View file

@ -2294,6 +2294,9 @@ syncprov_play_accesslog( Operation *op, SlapReply *rs, sync_control *srs,
fop.o_bd = db;
fop.o_dn = db->be_rootdn;
fop.o_ndn = db->be_rootndn;
memset( fop.o_ctrlflag, 0, sizeof(fop.o_ctrlflag) );
rc = be_entry_get_rw( &fop, &si->si_logbase, NULL, ad_minCSN, 0, &e );
if ( rc ) {
return rc;

View file

@ -292,6 +292,8 @@ void glue_parent(Operation *op) {
nop.o_req_ndn = ndn;
nop.ora_e = e;
memset( nop.o_ctrlflag, 0, sizeof(nop.o_ctrlflag) );
nop.o_bd->bd_info = (BackendInfo *) on->on_info->oi_orig;
syncrepl_add_glue(&nop, e);
nop.o_bd->bd_info = (BackendInfo *) on;