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

(ITS#6587) lconn_refcnt is not thread-safe



Full_Name: Test Seven
Version: 2.4.22
OS: Windows
URL: ftp://ftp.openldap.org/incoming/
Submission from: (NULL) (195.113.184.10)


lconn_refcnt is read and written without any sync mechanism, which may cause
subtle multi-threading issues.

E.g. libldap/result.c -r1.172
#ifdef LDAP_R_COMPILE
ldap_pvt_thread_mutex_unlock( &ld->ld_conn_mutex );
#endif
rc = try_read1msg( ld, msgid, all, lc, result );
lnext = lc->lconn_next;
/* Only take locks if we're really freeing */
if ( lc->lconn_refcnt <= 1 ) {
#ifdef LDAP_R_COMPILE
	ldap_pvt_thread_mutex_lock( &ld->ld_req_mutex );
#endif
	ldap_free_connection( ld, lc, 0, 1 );