Skip to content

Commit 8d8847e

Browse files
committed
Take other eldap_search_result cases into account
Reported here #4281 (reply in thread) Fixes #4444 Follow-up to #4285
1 parent e73b52e commit 8d8847e

File tree

1 file changed

+28
-8
lines changed

1 file changed

+28
-8
lines changed

deps/rabbitmq_auth_backend_ldap/src/rabbit_auth_backend_ldap.erl

Lines changed: 28 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -352,9 +352,15 @@ search_groups(LDAP, Desc, GroupsBase, Scope, DN) ->
352352
[];
353353
{ok, {referral, Referrals}} ->
354354
{error, {referrals_not_supported, Referrals}};
355-
{ok, #eldap_search_result{entries = []}} ->
355+
%% support #eldap_search_result before and after
356+
%% https://github.com/erlang/otp/pull/5538
357+
{ok, {eldap_search_result, [], _Referrals}} ->
356358
[];
357-
{ok, #eldap_search_result{entries = Entries}} ->
359+
{ok, {eldap_search_result, [], _Referrals, _Controls}}->
360+
[];
361+
{ok, {eldap_search_result, Entries, _Referrals}} ->
362+
[ON || #eldap_entry{object_name = ON} <- Entries];
363+
{ok, {eldap_search_result, Entries, _Referrals, _Controls}} ->
358364
[ON || #eldap_entry{object_name = ON} <- Entries]
359365
end.
360366

@@ -438,7 +444,11 @@ object_exists(DN, Filter, LDAP) ->
438444
{scope, eldap:baseObject()}]) of
439445
{ok, {referral, Referrals}} ->
440446
{error, {referrals_not_supported, Referrals}};
441-
{ok, #eldap_search_result{entries = Entries}} ->
447+
%% support #eldap_search_result before and after
448+
%% https://github.com/erlang/otp/pull/5538
449+
{ok, {eldap_search_result, Entries, _Referrals}} ->
450+
length(Entries) > 0;
451+
{ok, {eldap_search_result, Entries, _Referrals, _Controls}} ->
442452
length(Entries) > 0;
443453
{error, _} = E ->
444454
E
@@ -451,9 +461,15 @@ attribute(DN, AttributeName, LDAP) ->
451461
{attributes, [AttributeName]}]) of
452462
{ok, {referral, Referrals}} ->
453463
{error, {referrals_not_supported, Referrals}};
454-
{ok, #eldap_search_result{entries = E = [#eldap_entry{}|_]}} ->
464+
%% support #eldap_search_result before and after
465+
%% https://github.com/erlang/otp/pull/5538
466+
{ok, {eldap_search_result, E = [#eldap_entry{}|_], _Referrals}} ->
455467
get_attributes(AttributeName, E);
456-
{ok, #eldap_search_result{entries = _}} ->
468+
{ok, {eldap_search_result, E = [#eldap_entry{}|_], _Referrals, _Controls}} ->
469+
get_attributes(AttributeName, E);
470+
{ok, {eldap_search_result, _Entries, _Referrals}} ->
471+
{error, not_found};
472+
{ok, {eldap_search_result, _Entries, _Referrals, _Controls}} ->
457473
{error, not_found};
458474
{error, _} = E ->
459475
E
@@ -829,15 +845,19 @@ dn_lookup(Username, LDAP) ->
829845
{attributes, ["distinguishedName"]}]) of
830846
{ok, {referral, Referrals}} ->
831847
{error, {referrals_not_supported, Referrals}};
832-
%% support #eldap_search_result before and after
833-
%% https://github.com/erlang/otp/pull/5538
848+
%% support #eldap_search_result before and after
849+
%% https://github.com/erlang/otp/pull/5538
834850
{ok, {eldap_search_result, [#eldap_entry{object_name = DN}], _Referrals}}->
835851
?L1("DN lookup: ~s -> ~s", [Username, DN]),
836852
DN;
837853
{ok, {eldap_search_result, [#eldap_entry{object_name = DN}], _Referrals, _Controls}}->
838854
?L1("DN lookup: ~s -> ~s", [Username, DN]),
839855
DN;
840-
{ok, #eldap_search_result{entries = Entries}} ->
856+
{ok, {eldap_search_result, Entries, _Referrals}} ->
857+
rabbit_log_ldap:warning("Searching for DN for ~s, got back ~p",
858+
[Filled, Entries]),
859+
Filled;
860+
{ok, {eldap_search_result, Entries, _Referrals, _Controls}} ->
841861
rabbit_log_ldap:warning("Searching for DN for ~s, got back ~p",
842862
[Filled, Entries]),
843863
Filled;

0 commit comments

Comments
 (0)