mirror of
https://git.openldap.org/openldap/openldap.git
synced 2024-12-21 03:10:25 +08:00
ITS#3365 - fix leaking bdb locks when evaluating dynamic groups
This commit is contained in:
parent
e7ec96fc6d
commit
0c9c90a3e9
@ -1329,10 +1329,15 @@ backend_group(
|
||||
Filter *filter;
|
||||
Entry *user;
|
||||
Backend *b2 = op->o_bd;
|
||||
void *o_private = op->o_private;
|
||||
|
||||
if ( target && dn_match( &target->e_nname, op_ndn ) ) {
|
||||
user = target;
|
||||
} else {
|
||||
/* back-bdb stored lockinfo here, we saved it
|
||||
* above. Clear it out so that a new lock can be used.
|
||||
*/
|
||||
op->o_private = NULL;
|
||||
op->o_bd = select_backend( op_ndn, 0, 0 );
|
||||
rc = be_entry_get_rw(op, op_ndn, NULL, NULL, 0, &user );
|
||||
}
|
||||
@ -1397,6 +1402,8 @@ loopit:
|
||||
}
|
||||
if ( user != target ) {
|
||||
be_entry_release_r( op, user );
|
||||
/* restore previous lockinfo, if any */
|
||||
op->o_private = o_private;
|
||||
}
|
||||
}
|
||||
op->o_bd = b2;
|
||||
|
Loading…
Reference in New Issue
Block a user