mirror of
https://git.openldap.org/openldap/openldap.git
synced 2024-12-27 03:20:22 +08:00
ITS#8775 for passwordMod, pass real DN thru
Since conn->c_dn is the real DN, need to see real DN for <self> ACLs to work.
This commit is contained in:
parent
4bd6a6d49d
commit
81076a7f7c
@ -867,6 +867,8 @@ rwm_entry_release_rw( Operation *op, Entry *e, int rw )
|
|||||||
return SLAP_CB_CONTINUE;
|
return SLAP_CB_CONTINUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static struct berval *passwd_oid;
|
||||||
|
|
||||||
static int
|
static int
|
||||||
rwm_entry_get_rw( Operation *op, struct berval *ndn,
|
rwm_entry_get_rw( Operation *op, struct berval *ndn,
|
||||||
ObjectClass *oc, AttributeDescription *at, int rw, Entry **ep )
|
ObjectClass *oc, AttributeDescription *at, int rw, Entry **ep )
|
||||||
@ -884,6 +886,11 @@ rwm_entry_get_rw( Operation *op, struct berval *ndn,
|
|||||||
return SLAP_CB_CONTINUE;
|
return SLAP_CB_CONTINUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* If we're fetching the target of a password mod, must let real DNs thru */
|
||||||
|
if ( op->o_tag == LDAP_REQ_EXTENDED && bvmatch( passwd_oid, &op->oq_extended.rs_reqoid ) ) {
|
||||||
|
return SLAP_CB_CONTINUE;
|
||||||
|
}
|
||||||
|
|
||||||
/* massage DN */
|
/* massage DN */
|
||||||
op2.o_tag = LDAP_REQ_SEARCH;
|
op2.o_tag = LDAP_REQ_SEARCH;
|
||||||
op2 = *op;
|
op2 = *op;
|
||||||
@ -1116,6 +1123,8 @@ static struct exop {
|
|||||||
{ BER_BVNULL, NULL }
|
{ BER_BVNULL, NULL }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static struct berval *passwd_oid = &exop_table[0].oid;
|
||||||
|
|
||||||
static int
|
static int
|
||||||
rwm_extended( Operation *op, SlapReply *rs )
|
rwm_extended( Operation *op, SlapReply *rs )
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user