From 02ef854f0ff31387ee85d954b1e26c1e65213f1a Mon Sep 17 00:00:00 2001 From: "Zaiming (Stone) Shi" Date: Fri, 29 Sep 2023 08:54:41 +0200 Subject: [PATCH] fix(ldap): no crash when no query result is empty list --- apps/emqx_ldap/src/emqx_ldap.erl | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/apps/emqx_ldap/src/emqx_ldap.erl b/apps/emqx_ldap/src/emqx_ldap.erl index 628397ff3..82f749967 100644 --- a/apps/emqx_ldap/src/emqx_ldap.erl +++ b/apps/emqx_ldap/src/emqx_ldap.erl @@ -262,10 +262,12 @@ do_ldap_query( ldap_connector_query_return, #{result => Result} ), - case Result#eldap_search_result.entries of - [_] = Entry -> - {ok, Entry}; - [_ | _] = L -> + Entries = Result#eldap_search_result.entries, + Count = length(Entries), + case Count =< 1 of + true -> + {ok, Entries}; + false -> %% Accept only a single exact match. %% Multiple matches likely indicate: %% 1. A misconfiguration in EMQX, allowing overly broad query conditions. @@ -276,7 +278,7 @@ do_ldap_query( error, LogMeta#{ msg => "ldap_query_found_more_than_one_match", - count => length(L) + count => length(Entries) } ), {error, {unrecoverable_error, Msg}}