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

Re: (ITS#6565) DNSSRV referrals: chaining without search base



Hello,
   we tested this (HEAD code):

1. ITS 6565 seems to be fixed: Chaining works now with correct search base.

2. If the target server of the chaining is not reachable we get "no such 
object", followed by a SIGSEV (core dump). Stack Trace:

#0  0x0000000400040004 in ?? ()
#1  0x000000000042eb60 in slap_cleanup_play (op=0x7fffe40028c0, 
rs=0x7ffff1f70940) at result.c:436
#2  0x000000000043145a in send_ldap_response (op=0x7fffe40028c0, 
rs=0x7ffff1f70940) at result.c:621
#3  0x00000000004320cd in slap_send_ldap_result (op=0x7fffe40028c0, 
rs=0x7ffff1f70940) at result.c:750
#4  0x00000000004e2154 in ldap_chain_response (op=0x7fffe40028c0, 
rs=0x7ffff1f70940) at chain.c:1132
#5  0x00000000004833f8 in over_back_response (op=0x7fffe40028c0, 
rs=0x7ffff1f70940) at backover.c:237
#6  0x000000000042eace in slap_response_play (op=0x7fffe40028c0, 
rs=0x7ffff1f70940) at result.c:402
#7  0x0000000000431437 in send_ldap_response (op=0x7fffe40028c0, 
rs=0x7ffff1f70940) at result.c:476
#8  0x00000000004320cd in slap_send_ldap_result (op=0x7fffe40028c0, 
rs=0x7ffff1f70940) at result.c:750
#9  0x0000000000497adc in dnssrv_back_referrals (op=0x7fffe40028c0, 
rs=0x7ffff1f70940) at referral.c:118

0x0000000400040004 is the address referenced in 
op->o_callback->sc_cleanup(op,rs) .

Regards,  Jochen.

Am 05.09.2010 18:01, schrieb masarati@aero.polimi.it:
>> Hello,
>>
>>> Hi.  I don't have time to work at this right now, but I think the
>>> solution
>>> would be to modify slapo-chain(5) so that when a referral's DN is "" and
>>> the DN in the original request is not "", to use that DN instead.  The
>>> original request DN can be found in op->o_req_dn.
>>
>>     we tested the following - with success:
>>
>> Just replace in servers/slapd/back-ldap/chain.c, function
>> ldap_chain_op(), line 485-486:
>>
>> 		op->o_req_dn = pdn;
>> 		op->o_req_ndn = ndn;
>>
>> With:
>>
>>          if (pdn.bv_len>  0) {
>>              op->o_req_dn = pdn;
>>          }
>>          if (ndn.bv_len>  0) {
>>              op->o_req_ndn = ndn;
>>          }
>>
>> It would be great if this came into the official code.
>
> This issue was fixed consistently in HEAD code more than a month ago,
> please test it and report, so in case it works the ITS can be closed and
> the fix released.
>
> Thanks, p.
>