From: Howard Chu Date: Tue, 13 Jan 2015 20:52:46 +0000 (+0000) Subject: Fix dangling lock (coverity) X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=d81d705710194aceaed6d35d1e25922b37cf0813;p=openldap Fix dangling lock (coverity) --- diff --git a/libraries/librewrite/session.c b/libraries/librewrite/session.c index 02fc0540b3..3554998972 100644 --- a/libraries/librewrite/session.c +++ b/libraries/librewrite/session.c @@ -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 ) { diff --git a/libraries/librewrite/xmap.c b/libraries/librewrite/xmap.c index 4e92d87b51..430d6b236d 100644 --- a/libraries/librewrite/xmap.c +++ b/libraries/librewrite/xmap.c @@ -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 );