mirror of
https://git.openldap.org/openldap/openldap.git
synced 2025-01-30 13:30:57 +08:00
don't assert on unprotected data (ITS#5814)
This commit is contained in:
parent
8726452d8f
commit
b52c62e69f
@ -424,7 +424,9 @@ Connection * connection_init(
|
||||
if ( flags & CONN_IS_CLIENT ) {
|
||||
c->c_connid = 0;
|
||||
c->c_conn_state = SLAP_C_CLIENT;
|
||||
ldap_pvt_thread_mutex_lock( &connections_mutex );
|
||||
c->c_struct_state = SLAP_C_USED;
|
||||
ldap_pvt_thread_mutex_unlock( &connections_mutex );
|
||||
c->c_close_reason = "?"; /* should never be needed */
|
||||
ber_sockbuf_ctrl( c->c_sb, LBER_SB_OPT_SET_FD, &sfd );
|
||||
ldap_pvt_thread_mutex_unlock( &c->c_mutex );
|
||||
@ -509,7 +511,9 @@ Connection * connection_init(
|
||||
ldap_pvt_thread_mutex_unlock( &conn_nextid_mutex );
|
||||
|
||||
c->c_conn_state = SLAP_C_INACTIVE;
|
||||
ldap_pvt_thread_mutex_lock( &connections_mutex );
|
||||
c->c_struct_state = SLAP_C_USED;
|
||||
ldap_pvt_thread_mutex_unlock( &connections_mutex );
|
||||
c->c_close_reason = "?"; /* should never be needed */
|
||||
|
||||
c->c_ssf = c->c_transport_ssf = ssf;
|
||||
@ -843,12 +847,12 @@ Connection* connection_next( Connection *c, ber_socket_t *index )
|
||||
for(; *index < dtblsize; (*index)++) {
|
||||
int c_struct;
|
||||
if( connections[*index].c_struct_state == SLAP_C_UNINITIALIZED ) {
|
||||
/* FIXME: accessing c_conn_state without locking c_mutex */
|
||||
assert( connections[*index].c_conn_state == SLAP_C_INVALID );
|
||||
continue;
|
||||
}
|
||||
|
||||
if( connections[*index].c_struct_state == SLAP_C_USED ) {
|
||||
assert( connections[*index].c_conn_state != SLAP_C_INVALID );
|
||||
c = &connections[(*index)++];
|
||||
if ( ldap_pvt_thread_mutex_trylock( &c->c_mutex )) {
|
||||
/* avoid deadlock */
|
||||
@ -861,6 +865,7 @@ Connection* connection_next( Connection *c, ber_socket_t *index )
|
||||
continue;
|
||||
}
|
||||
}
|
||||
assert( c->c_conn_state != SLAP_C_INVALID );
|
||||
break;
|
||||
}
|
||||
|
||||
@ -868,6 +873,7 @@ Connection* connection_next( Connection *c, ber_socket_t *index )
|
||||
if ( c_struct == SLAP_C_PENDING )
|
||||
continue;
|
||||
assert( c_struct == SLAP_C_UNUSED );
|
||||
/* FIXME: accessing c_conn_state without locking c_mutex */
|
||||
assert( connections[*index].c_conn_state == SLAP_C_INVALID );
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user