OpenLDAP: fix LDAP connection phase memory leak

bug: http://curl.haxx.se/bug/view.cgi?id=3474308
This commit is contained in:
Yang Tse 2012-01-18 16:06:29 +01:00
parent 6ea7acf5a9
commit 2cafb0e97c
1 changed files with 10 additions and 2 deletions

View File

@ -6,7 +6,7 @@
* \___|\___/|_| \_\_____|
*
* Copyright (C) 2010, Howard Chu, <hyc@openldap.org>
* Copyright (C) 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
* Copyright (C) 2011 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@ -336,7 +336,10 @@ retry:
int proto;
ldap_get_option(li->ld, LDAP_OPT_PROTOCOL_VERSION, &proto);
if(proto == LDAP_VERSION3) {
ldap_memfree(info);
if(info) {
ldap_memfree(info);
info = NULL;
}
proto = LDAP_VERSION2;
ldap_set_option(li->ld, LDAP_OPT_PROTOCOL_VERSION, &proto);
li->didbind = FALSE;
@ -347,8 +350,13 @@ retry:
if(err) {
failf(data, "LDAP remote: bind failed %s %s", ldap_err2string(rc),
info ? info : "");
if(info)
ldap_memfree(info);
return CURLE_LOGIN_DENIED;
}
if(info)
ldap_memfree(info);
conn->recv[FIRSTSOCKET] = ldap_recv;
*done = TRUE;
return CURLE_OK;