X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=servers%2Fslapd%2Fpasswd.c;h=a262a9911aa74009a485b084d9ad4139f9e2d982;hb=4a8d8eb78a610baefde7f5b3e0a371961dafff84;hp=e056a83604070c85767c7205ec90302c176d4557;hpb=86ef29b5e79645f1e2fc98f429035db7b433a90a;p=openldap diff --git a/servers/slapd/passwd.c b/servers/slapd/passwd.c index e056a83604..a262a9911a 100644 --- a/servers/slapd/passwd.c +++ b/servers/slapd/passwd.c @@ -51,6 +51,7 @@ int passwd_extop( int i, nhash; char **hashes; int rc; + BackendDB *op_be; cb2.sc_next = &cb; @@ -108,6 +109,12 @@ int passwd_extop( goto error_return; } + /* If we've got a glued backend, check the real backend */ + op_be = op->o_bd; + if ( SLAP_GLUE_INSTANCE( op->o_bd )) { + op->o_bd = select_backend( &op->o_req_ndn, 0, 0 ); + } + if (backend_check_restrictions( op, rs, (struct berval *)&slap_EXOP_MODIFY_PASSWD ) != LDAP_SUCCESS) { rc = rs->sr_err; @@ -159,6 +166,8 @@ int passwd_extop( goto error_return; } + op->o_bd = op_be; + /* Give the backend a chance to handle this itself */ if ( op->o_bd->be_extended ) { rs->sr_err = op->o_bd->be_extended( op, rs );