From: Aleksey Katargin Date: Wed, 19 Oct 2016 10:25:07 +0000 (+0500) Subject: rlm_ldap: cleanup memory after ldap version query X-Git-Tag: release_3_0_13~128^2~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5da65328fa8e55b554535c8180cdff769aa9e01c;p=thirdparty%2Ffreeradius-server.git rlm_ldap: cleanup memory after ldap version query Signed-off-by: Aleksey Katargin --- diff --git a/src/modules/rlm_ldap/rlm_ldap.c b/src/modules/rlm_ldap/rlm_ldap.c index 94130268ac0..15f3368c9b3 100644 --- a/src/modules/rlm_ldap/rlm_ldap.c +++ b/src/modules/rlm_ldap/rlm_ldap.c @@ -670,6 +670,8 @@ static int mod_instantiate(CONF_SECTION *conf, void *instance) ldap_errno = ldap_get_option(NULL, LDAP_OPT_API_INFO, &info); if (ldap_errno == LDAP_OPT_SUCCESS) { + int i; + /* * Don't generate warnings if the compile type vendor name * is found within the link time vendor name. @@ -691,8 +693,11 @@ static int mod_instantiate(CONF_SECTION *conf, void *instance) INFO("rlm_ldap: libldap vendor: %s, version: %i", info.ldapai_vendor_name, info.ldapai_vendor_version); - ldap_memfree(info.ldapai_vendor_name); + for ( i = 0; info.ldapai_extensions[i] != NULL; i++) { + ldap_memfree(info.ldapai_extensions[i]); + } ldap_memfree(info.ldapai_extensions); + ldap_memfree(info.ldapai_vendor_name); } else { DEBUG("rlm_ldap: Falling back to build time libldap version info. Query for LDAP_OPT_API_INFO " "returned: %i", ldap_errno); @@ -839,6 +844,7 @@ static int mod_instantiate(CONF_SECTION *conf, void *instance) /* * Now iterate over all the 'server' config items */ + if (!inst->server) inst->server = talloc_strdup(inst, ""); for (cp = cf_pair_find(conf, "server"); cp; cp = cf_pair_find_next(conf, cp, "server")) {