[Date Prev][Date Next]
[Chronological]
[Thread]
[Top]
Bug fix: memory leaking in libraries/libldap/open.c (ITS#1125)
Hi,
There is memory leaking in ver. 1.2.11 when connection to LDAP server is
failed.
The problem is in libraries/libldap/open.c:
The leaking occurs in the following function:
LDAP *
ldap_open( char *host, int port )
{
LDAP *ld;
#ifdef LDAP_REFERRALS
LDAPServer *srv;
#endif /* LDAP_REFERRALS */
Debug( LDAP_DEBUG_TRACE, "ldap_open\n", 0, 0, 0 );
if (( ld = ldap_init( host, port )) == NULL ) {
return( NULL );
}
if ( ldap_delayed_open( ld ) < 0 ) {
return( NULL );
}
Debug( LDAP_DEBUG_TRACE, "ldap_open successful, ld_host is
%s\n",
( ld->ld_host == NULL ) ? "(null)" : ld->ld_host, 0, 0
);
return( ld );
}
After successfull ldap_init memory allocated to ld and this memory leaks
after unsuccessfull ldap_delayed_open.
If to implement:
if ( ldap_delayed_open( ld ) < 0 ) {
/* Add this to avoid memory leaking */
if ( ld != NULL ) ldap_ld_free( ld, 0 );
/* ------------------------------------------*/
return( NULL );
}
then everything is gonna be ok.
Best regards,
--
Dmitri Belotchkine
Operations Development Engineer
AtosOrigin - eBusiness - Unix Application & Hosting Services
Phone: +31 (0)40 2789381