Skip to content
Snippets Groups Projects
Commit 690f0111 authored by Howard Chu's avatar Howard Chu
Browse files

ITS#2894 - search refs that are the immediate result of another search

ref are associated with the parent req instead of the original req, to
prevent infinite loops.
parent a7bd9dc4
Branches
Tags
No related merge requests found
......@@ -725,6 +725,7 @@ ldap_chase_v3referrals( LDAP *ld, LDAPRequest *lr, char **refs, int sref, char *
char **refarray = NULL;
LDAPConn *lc;
int rc, count, i, j, id;
int parent_was_reference;
LDAPreqinfo rinfo;
ld->ld_errno = LDAP_SUCCESS; /* optimistic */
......@@ -760,6 +761,11 @@ ldap_chase_v3referrals( LDAP *ld, LDAPRequest *lr, char **refs, int sref, char *
goto done;
}
/* check if parent request was a search reference */
parent_was_reference = ( lr->lr_parent &&
lr->lr_parent->lr_res_msgtype == LDAP_RES_SEARCH_REFERENCE ) ?
1 : 0;
/* find original request */
for ( origreq = lr;
origreq->lr_parent != NULL;
......@@ -890,7 +896,8 @@ ldap_chase_v3referrals( LDAP *ld, LDAPRequest *lr, char **refs, int sref, char *
ldap_pvt_thread_mutex_lock( &ld->ld_req_mutex );
#endif
rc = ldap_send_server_request( ld, ber, id,
origreq, srv, NULL, &rinfo );
(sref && !parent_was_reference) ? origreq : lr,
srv, NULL, &rinfo );
#ifdef LDAP_R_COMPILE
ldap_pvt_thread_mutex_unlock( &ld->ld_req_mutex );
#endif
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment