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

RE: Crash on recursive rebind following referral (ITS#3359)

At 10:39 AM 10/11/2004, ian@underpressuredivers.com wrote:
>There are actually a lot of places where the return code from ldap_result is
>checked to be == -1 or < 0 for error, and if that is not the case then it
>goes on to look at the reply message, usually calling ldap_parse_result()
>which will asert if the reply message pointer is NULL (as it is on a
>timeout). These include calls to ldap_result() in ldapdelete.c,
>ldapmodify.c, ldapmodrdn.c, add.c, bind.c, compare.c, delete.c, extend.c,
>kbind.c, passwd.c, sasl.c, test.c and whoami.c.

None of these ldap_result() calls should return 0 as

>In fact, the only places I can find that allow for a 0 return code from
>ldap_result() being an error are in ldapsearch.c and search.c.

Because the _st() routine allows the caller to provide a timeout.

That is, ldap_result() shouldn't return 0 when timeout == NULL.
That's the bug.