Fix dangling lock (coverity)

This commit is contained in:
Howard Chu 2015-01-13 20:52:46 +00:00
parent 08f5aca7db
commit 7d483f7aba
2 changed files with 11 additions and 2 deletions

View File

@ -100,6 +100,9 @@ rewrite_session_init(
session = calloc( sizeof( struct rewrite_session ), 1 );
if ( session == NULL ) {
#ifdef USE_REWRITE_LDAP_PVT_THREADS
ldap_pvt_thread_rdwr_wunlock( &info->li_cookies_mutex );
#endif /* USE_REWRITE_LDAP_PVT_THREADS */
return NULL;
}
session->ls_cookie = ( void * )cookie;
@ -108,11 +111,13 @@ rewrite_session_init(
#ifdef USE_REWRITE_LDAP_PVT_THREADS
if ( ldap_pvt_thread_mutex_init( &session->ls_mutex ) ) {
free( session );
ldap_pvt_thread_rdwr_wunlock( &info->li_cookies_mutex );
return NULL;
}
if ( ldap_pvt_thread_rdwr_init( &session->ls_vars_mutex ) ) {
ldap_pvt_thread_mutex_destroy( &session->ls_mutex );
free( session );
ldap_pvt_thread_rdwr_wunlock( &info->li_cookies_mutex );
return NULL;
}
#endif /* USE_REWRITE_LDAP_PVT_THREADS */
@ -122,7 +127,7 @@ rewrite_session_init(
info->li_num_cookies++;
#ifdef USE_REWRITE_LDAP_PVT_THREADS
ldap_pvt_thread_rdwr_wunlock( &info->li_cookies_mutex );
ldap_pvt_thread_rdwr_wunlock( &info->li_cookies_mutex );
#endif /* USE_REWRITE_LDAP_PVT_THREADS */
if ( rc != 0 ) {

View File

@ -335,7 +335,11 @@ rewrite_xmap_apply(
&& ( p = strtok( NULL, "" ) ) ) {
val->bv_val = strdup( p );
if ( val->bv_val == NULL ) {
return REWRITE_ERR;
#ifdef USE_REWRITE_LDAP_PVT_THREADS
ldap_pvt_thread_mutex_unlock( &map->lm_mutex );
#endif /* USE_REWRITE_LDAP_PVT_THREADS */
rc = REWRITE_ERR;
goto rc_return;
}
val->bv_len = strlen( p );