Skip to content

Commit 8458ede

Browse files
committed
Use erl_parse:parse_term/1 to parse LDAP queries
This is a simpler method than in #14850. There is no need for eval since we're not doing something like `match_fun` with this configuration. Pointed out by @gomoripeti Follow-up to #14850
1 parent 3751301 commit 8458ede

File tree

1 file changed

+16
-19
lines changed

1 file changed

+16
-19
lines changed

deps/rabbitmq_auth_backend_ldap/src/rabbit_auth_backend_ldap_util.erl

Lines changed: 16 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -49,40 +49,37 @@ fixup_query(false, Query) ->
4949
Query ++ ".".
5050

5151
parse_query_handle_erl_scan({ok, Tokens, _EndLine}) ->
52-
parse_query_handle_exprs(erl_parse:parse_exprs(Tokens));
52+
parse_query_handle_parse_term(erl_parse:parse_term(Tokens));
5353
parse_query_handle_erl_scan(Error) ->
5454
cuttlefish:invalid(fmt("invalid query: ~tp", [Error])).
5555

56-
parse_query_handle_exprs({ok, AbsForm}) ->
57-
parse_query_handle_eval(erl_eval:exprs(AbsForm, erl_eval:new_bindings()));
58-
parse_query_handle_exprs(Error) ->
59-
cuttlefish:invalid(fmt("invalid query: ~tp", [Error])).
60-
61-
parse_query_handle_eval({value, {constant, true}=T, _}) ->
56+
parse_query_handle_parse_term({ok, {constant, true}=T}) ->
6257
T;
63-
parse_query_handle_eval({value, {constant, false}=T, _}) ->
58+
parse_query_handle_parse_term({ok, {constant, false}=T}) ->
6459
T;
65-
parse_query_handle_eval({value, {in_group, _}=T, _}) ->
60+
parse_query_handle_parse_term({ok, {in_group, _}=T}) ->
6661
T;
67-
parse_query_handle_eval({value, {in_group_nested, _, _}=T, _}) ->
62+
parse_query_handle_parse_term({ok, {in_group_nested, _, _}=T}) ->
6863
T;
69-
parse_query_handle_eval({value, {for, Q}=T, _}) when is_list(Q) ->
64+
parse_query_handle_parse_term({ok, {for, Q}=T}) when is_list(Q) ->
7065
T;
71-
parse_query_handle_eval({value, {'not', _}=T, _}) ->
66+
parse_query_handle_parse_term({ok, {'not', _}=T}) ->
7267
T;
73-
parse_query_handle_eval({value, {'and', Q}=T, _}) when is_list(Q) ->
68+
parse_query_handle_parse_term({ok, {'and', Q}=T}) when is_list(Q) ->
7469
T;
75-
parse_query_handle_eval({value, {'or', Q}=T, _}) when is_list(Q) ->
70+
parse_query_handle_parse_term({ok, {'or', Q}=T}) when is_list(Q) ->
7671
T;
77-
parse_query_handle_eval({value, {equals, _, _}=T, _}) ->
72+
parse_query_handle_parse_term({ok, {equals, _, _}=T}) ->
7873
T;
79-
parse_query_handle_eval({value, {match, _, _}=T, _}) ->
74+
parse_query_handle_parse_term({ok, {match, _, _}=T}) ->
8075
T;
81-
parse_query_handle_eval({value, T, _}) when is_list(T) ->
76+
parse_query_handle_parse_term({ok, T}) when is_list(T) ->
8277
%% NB: tag_queries uses this form
8378
T;
84-
parse_query_handle_eval({value, Unexpected, _}) ->
85-
cuttlefish:invalid(fmt("invalid query: ~tp", [Unexpected])).
79+
parse_query_handle_parse_term({ok, {value, Unexpected, _}}) ->
80+
cuttlefish:invalid(fmt("invalid query: ~tp", [Unexpected]));
81+
parse_query_handle_parse_term({error, ErrorInfo}) ->
82+
cuttlefish:invalid(fmt("invalid query: ~tp", [ErrorInfo])).
8683

8784
fmt(Fmt, Args) ->
8885
rabbit_data_coercion:to_unicode_charlist(io_lib:format(Fmt, Args)).

0 commit comments

Comments
 (0)