diff options
| author | Evgeniy Khramtsov <ekhramtsov@process-one.net> | 2011-06-15 20:06:32 +1000 |
|---|---|---|
| committer | Evgeniy Khramtsov <ekhramtsov@process-one.net> | 2011-06-15 20:06:32 +1000 |
| commit | 6cc6c04c4a1a1ca4638141e86b12a0384c184cf6 (patch) | |
| tree | c94d2bdad0bea50a50d56250d5f0f7f7aa64124c /src/eldap | |
| parent | Clarify in mod_register_web example what host to put in the URL (diff) | |
Log an error when an LDAP filter is incorrect (EJAB-1395)
Diffstat (limited to 'src/eldap')
| -rw-r--r-- | src/eldap/eldap_filter.erl | 2 | ||||
| -rw-r--r-- | src/eldap/eldap_utils.erl | 16 |
2 files changed, 18 insertions, 0 deletions
diff --git a/src/eldap/eldap_filter.erl b/src/eldap/eldap_filter.erl index e1b5be303..d2e1b66a4 100644 --- a/src/eldap/eldap_filter.erl +++ b/src/eldap/eldap_filter.erl @@ -82,6 +82,8 @@ parse(L) when is_list(L) -> %%%------------------------------------------------------------------- parse(L, SList) when is_list(L), is_list(SList) -> case catch eldap_filter_yecc:parse(scan(L, SList)) of + {'EXIT', _} = Err -> + {error, Err}; {error, {_, _, Msg}} -> {error, Msg}; {ok, Result} -> diff --git a/src/eldap/eldap_utils.erl b/src/eldap/eldap_utils.erl index b8ddee36b..5f3a24283 100644 --- a/src/eldap/eldap_utils.erl +++ b/src/eldap/eldap_utils.erl @@ -35,8 +35,11 @@ make_filter/2, get_state/2, case_insensitive_match/2, + check_filter/1, uids_domain_subst/2]). +-include("ejabberd.hrl"). + %% Generate an 'or' LDAP query on one or several attributes %% If there is only one attribute generate_subfilter([UID]) -> @@ -144,3 +147,16 @@ uids_domain_subst(Host, UIDs) -> (A) -> A end, UIDs). + +check_filter(undefined) -> + ok; +check_filter(Filter) -> + case eldap_filter:parse(Filter) of + {ok, _} -> + ok; + Err -> + ?ERROR_MSG("failed to parse LDAP filter:~n" + "** Filter: ~p~n" + "** Reason: ~p", + [Filter, Err]) + end. |
