Commit 2cafb0e9 authored by Yang Tse's avatar Yang Tse
Browse files

OpenLDAP: fix LDAP connection phase memory leak

parent 6ea7acf5
Loading
Loading
Loading
Loading
+10 −2
Original line number Diff line number Diff line
@@ -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) {
      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;