[Date Prev][Date Next] [Chronological] [Thread] [Top]

Re: ITS#3971 Fix

Mitya wrote:

(Maybe I should have posted this to OpenLDAP-Devel, but I'm not an
OpenLDAP developer, and I feel a little bit lazy to subscribe to another
one mailing list ;)

Since you're discussing ITS#3971, you should simply have replied to openldap-its...

The first patch fixes ITS#3971. It needs to be reviewed; I only ran
"make check" (successfully) after applying this patch, but maybe similar
corrections need to be done in tool section of backglue.
The nature of ITS#3971 is the following; we implicitly make
op->o_req_dn->bv_val equal to gi->gi_n[i]->gn_be->be_suffix[0]->bv_val
(backglue.c:338), and op->o_req_dn->bv_val after that can be freed by
rwm (rwm.c:82), thus filling gi->gi_n[i]->gn_be->be_suffix[0]->bv_val
with garbage and rendering backglue inoperational for further
invocations. Replacing assignment by ber_dupbv fixes this.

Thanks for investigating. I would prefer a different fix in rwm, but knowing why the problem occurs is a great start.

Even with this patch backglue and global rwm do not work together in
subordinate relays configuration. That's because glue makes no chance
for a global rwm instance to act on subordinates, after relaying is
done. The nature of this misbehaviour seems to be a little bit deeper,
so I didn't investigate this.

I don't believe you should be using the rwm overlay as a global overlay since the relay backend automatically invokes it itself.

 -- Howard Chu
 Chief Architect, Symas Corp.  http://www.symas.com
 Director, Highland Sun        http://highlandsun.com/hyc
 OpenLDAP Core Team            http://www.openldap.org/project/