int ldap_errno;
char *dn = NULL;
char filter[LDAP_MAX_FILTER_STR_LEN];
+ char *filter_p = NULL;
char base_dn[LDAP_MAX_DN_STR_LEN];
bool freeit = false; //!< Whether the message should
(*pconn)->rebound = false;
}
- if (radius_xlat(filter, sizeof(filter), request, inst->userobj_filter, rlm_ldap_escape_func, NULL) < 0) {
- REDEBUG("Unable to create filter");
- *rcode = RLM_MODULE_INVALID;
+ if (inst->userobj_filter) {
+ if (radius_xlat(filter, sizeof(filter), request, inst->userobj_filter,
+ rlm_ldap_escape_func, NULL) < 0) {
+ REDEBUG("Unable to create filter");
+ *rcode = RLM_MODULE_INVALID;
- return NULL;
+ return NULL;
+ }
+
+ filter_p = filter;
}
if (radius_xlat(base_dn, sizeof(base_dn), request, inst->userobj_base_dn, rlm_ldap_escape_func, NULL) < 0) {
return NULL;
}
- status = rlm_ldap_search(inst, request, pconn, base_dn, inst->userobj_scope, filter, attrs, result);
+ status = rlm_ldap_search(inst, request, pconn, base_dn, inst->userobj_scope, filter_p, attrs, result);
switch (status) {
case LDAP_PROC_SUCCESS:
break;
* User configuration
*/
static CONF_PARSER user_config[] = {
- { "filter", FR_CONF_OFFSET(PW_TYPE_STRING, ldap_instance_t, userobj_filter), "(uid=%u)" },
+ { "filter", FR_CONF_OFFSET(PW_TYPE_STRING, ldap_instance_t, userobj_filter), NULL },
{ "scope", FR_CONF_OFFSET(PW_TYPE_STRING, ldap_instance_t, userobj_scope_str), "sub" },
{ "base_dn", FR_CONF_OFFSET(PW_TYPE_STRING, ldap_instance_t, userobj_base_dn), "" },