[prev in list] [next in list] [prev in thread] [next in thread]
List: openldap-bugs
Subject: (ITS#4450) Potential endless loop in libldap when cahsing referrals
From: ando () sys-net ! it
Date: 2006-03-25 7:15:36
Message-ID: 200603250715.k2P7FakX039902 () boole ! openldap ! org
[Download RAW message or body]
Full_Name: Pierangelo Masarati
Version: HEAD,re23,?
OS: irrelevant
URL: ftp://ftp.openldap.org/incoming/
Submission from: (NULL) (81.72.89.40)
Submitted by: ando
In libldap/request.c:ldap_chase_v3referrals() there's a piece of code I don't
quite well understand, but I've experienced it running into an endless loop
whentwo different DNs for the same connection are requested:
for (lp = origreq; lp; ) {
if ( lp->lr_conn == lc ) {
if ( len == lp->lr_dn.bv_len ) {
if ( len && strncmp(
srv->lud_dn, lp->lr_dn.bv_val,
len ))
continue;
looped = 1;
break;
}
}
if ( lp == origreq )
lp = lp->lr_child;
else
lp = lr->lr_refnext;
}
If the strncmp() returns != 0, lp is never changed.
I'm at a loss as per what would be a reasonable behavior in this case. My guess
is that the "continue" originally referred to the outer loop.
p.
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic