From: Arran Cudbard-Bell Date: Tue, 22 Sep 2015 18:38:38 +0000 (+0100) Subject: Fix crash in rlm_ldap if server goes away whilst processing profiles X-Git-Tag: release_3_0_10~48 X-Git-Url: http://www.project-moonshot.org/gitweb/?p=freeradius.git;a=commitdiff_plain;h=b660248ef4c0deff527f586089466fd4ef0ad9f9 Fix crash in rlm_ldap if server goes away whilst processing profiles --- diff --git a/src/modules/rlm_ldap/rlm_ldap.c b/src/modules/rlm_ldap/rlm_ldap.c index 13207ed..d70d005 100644 --- a/src/modules/rlm_ldap/rlm_ldap.c +++ b/src/modules/rlm_ldap/rlm_ldap.c @@ -1608,11 +1608,18 @@ skip_edir: values = ldap_get_values_len(conn->handle, entry, inst->profile_attr); if (values != NULL) { for (i = 0; values[i] != NULL; i++) { + rlm_rcode_t ret; char *value; value = rlm_ldap_berval_to_string(request, values[i]); - rlm_ldap_map_profile(inst, request, &conn, value, &expanded); + ret = rlm_ldap_map_profile(inst, request, &conn, value, &expanded); talloc_free(value); + if (ret == RLM_MODULE_FAIL) { + ldap_value_free_len(values); + rcode = ret; + goto finish; + } + } ldap_value_free_len(values); }