From: Hallvard Furuseth Date: Wed, 20 Apr 2011 21:00:24 +0000 (+0200) Subject: ITS#6930 Plug ldapi://too-long-path socket leak. X-Git-Tag: OPENLDAP_REL_ENG_2_5_0ALPHA~1391 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a1cb490d0c53c5f2ceb8220186879d9598aee990;p=thirdparty%2Fopenldap.git ITS#6930 Plug ldapi://too-long-path socket leak. Klocwork issue#117, ldap_connect_to_path(). --- diff --git a/libraries/libldap/os-local.c b/libraries/libldap/os-local.c index f6114373f5..7f1f831002 100644 --- a/libraries/libldap/os-local.c +++ b/libraries/libldap/os-local.c @@ -328,11 +328,6 @@ ldap_connect_to_path(LDAP *ld, Sockbuf *sb, LDAPURLDesc *srv, int async) oslocal_debug(ld, "ldap_connect_to_path\n",0,0,0); - s = ldap_pvt_socket( ld ); - if ( s == AC_SOCKET_INVALID ) { - return -1; - } - if ( path == NULL || path[0] == '\0' ) { path = LDAPI_SOCK; } else { @@ -342,6 +337,11 @@ ldap_connect_to_path(LDAP *ld, Sockbuf *sb, LDAPURLDesc *srv, int async) } } + s = ldap_pvt_socket( ld ); + if ( s == AC_SOCKET_INVALID ) { + return -1; + } + oslocal_debug(ld, "ldap_connect_to_path: Trying %s\n", path, 0, 0); memset( &server, '\0', sizeof(server) ); @@ -351,10 +351,7 @@ ldap_connect_to_path(LDAP *ld, Sockbuf *sb, LDAPURLDesc *srv, int async) rc = ldap_pvt_connect(ld, s, &server, async); if (rc == 0) { - int err; - err = ldap_int_connect_cbs( ld, sb, &s, srv, (struct sockaddr *)&server ); - if ( err ) - rc = err; + rc = ldap_int_connect_cbs( ld, sb, &s, srv, (struct sockaddr *)&server ); } if ( rc ) { ldap_pvt_close_socket(ld, s);