From 1ed9539a7ff94c75d82df52841cad46aee50ae37 Mon Sep 17 00:00:00 2001 From: Thales Macedo Garitezi Date: Wed, 22 Jun 2022 14:21:38 -0300 Subject: [PATCH 1/2] fix(acl): do not leave placeholders unreplaced (4.2) Port of https://github.com/emqx/emqx/pull/8280 --- src/emqx_access_rule.erl | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/src/emqx_access_rule.erl b/src/emqx_access_rule.erl index b0e1aeb0b..2cfec4f9b 100644 --- a/src/emqx_access_rule.erl +++ b/src/emqx_access_rule.erl @@ -133,9 +133,13 @@ match_who(_ClientInfo, _Who) -> match_topics(_ClientInfo, _Topic, []) -> false; match_topics(ClientInfo, Topic, [{pattern, PatternFilter}|Filters]) -> - TopicFilter = feed_var(ClientInfo, PatternFilter), - match_topic(emqx_topic:words(Topic), TopicFilter) - orelse match_topics(ClientInfo, Topic, Filters); + case feed_var(ClientInfo, PatternFilter) of + nomatch -> + false; + TopicFilter -> + match_topic(emqx_topic:words(Topic), TopicFilter) + orelse match_topics(ClientInfo, Topic, Filters) + end; match_topics(ClientInfo, Topic, [TopicFilter|Filters]) -> match_topic(emqx_topic:words(Topic), TopicFilter) orelse match_topics(ClientInfo, Topic, Filters). @@ -149,14 +153,13 @@ feed_var(ClientInfo, Pattern) -> feed_var(ClientInfo, Pattern, []). feed_var(_ClientInfo, [], Acc) -> lists:reverse(Acc); -feed_var(ClientInfo = #{clientid := undefined}, [<<"%c">>|Words], Acc) -> - feed_var(ClientInfo, Words, [<<"%c">>|Acc]); +feed_var(#{clientid := undefined}, [<<"%c">>|_Words], _Acc) -> + nomatch; feed_var(ClientInfo = #{clientid := ClientId}, [<<"%c">>|Words], Acc) -> feed_var(ClientInfo, Words, [ClientId |Acc]); -feed_var(ClientInfo = #{username := undefined}, [<<"%u">>|Words], Acc) -> - feed_var(ClientInfo, Words, [<<"%u">>|Acc]); +feed_var(#{username := undefined}, [<<"%u">>|_Words], _Acc) -> + nomatch; feed_var(ClientInfo = #{username := Username}, [<<"%u">>|Words], Acc) -> feed_var(ClientInfo, Words, [Username|Acc]); feed_var(ClientInfo, [W|Words], Acc) -> feed_var(ClientInfo, Words, [W|Acc]). - From af284cebf7d3dbe6730f82e79e62e09b14399e07 Mon Sep 17 00:00:00 2001 From: Thales Macedo Garitezi Date: Wed, 22 Jun 2022 16:19:50 -0300 Subject: [PATCH 2/2] chore: add appup actions --- src/emqx.appup.src | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/emqx.appup.src b/src/emqx.appup.src index c7a93eb58..dddf77e0e 100644 --- a/src/emqx.appup.src +++ b/src/emqx.appup.src @@ -172,6 +172,7 @@ {load_module, emqx_plugins, brutal_purge, soft_purge, []} ]}, {<<"4.2.8">>, [ + {load_module, emqx_access_rule, brutal_purge, soft_purge, []}, {load_module, emqx_alarm, brutal_purge, soft_purge, []}, {load_module, emqx_banned, brutal_purge, soft_purge, []}, {load_module, emqx_message, brutal_purge, soft_purge, []}, @@ -189,6 +190,7 @@ {load_module, emqx_plugins, brutal_purge, soft_purge, []} ]}, {<<"4.2.9">>, [ + {load_module, emqx_access_rule, brutal_purge, soft_purge, []}, {load_module, emqx_alarm, brutal_purge, soft_purge, []}, {load_module, emqx_banned, brutal_purge, soft_purge, []}, {load_module, emqx_message, brutal_purge, soft_purge, []}, @@ -205,6 +207,7 @@ {load_module, emqx_plugins, brutal_purge, soft_purge, []} ]}, {<<"4.2.10">>, [ + {load_module, emqx_access_rule, brutal_purge, soft_purge, []}, {load_module, emqx_alarm, brutal_purge, soft_purge, []}, {load_module, emqx_banned, brutal_purge, soft_purge, []}, {load_module, emqx_message, brutal_purge, soft_purge, []}, @@ -219,6 +222,7 @@ {load_module, emqx_plugins, brutal_purge, soft_purge, []} ]}, {<<"4.2.11">>, [ + {load_module, emqx_access_rule, brutal_purge, soft_purge, []}, {load_module, emqx_alarm, brutal_purge, soft_purge, []}, {load_module, emqx_banned, brutal_purge, soft_purge, []} ]}, @@ -384,6 +388,7 @@ {load_module, emqx_plugins, brutal_purge, soft_purge, []} ]}, {<<"4.2.8">>, [ + {load_module, emqx_access_rule, brutal_purge, soft_purge, []}, {load_module, emqx_message, brutal_purge, soft_purge, []}, {load_module, emqx_frame, brutal_purge, soft_purge, []}, {load_module, emqx_channel, brutal_purge, soft_purge, []}, @@ -399,6 +404,7 @@ {load_module, emqx_plugins, brutal_purge, soft_purge, []} ]}, {<<"4.2.9">>, [ + {load_module, emqx_access_rule, brutal_purge, soft_purge, []}, {load_module, emqx_message, brutal_purge, soft_purge, []}, {load_module, emqx_frame, brutal_purge, soft_purge, []}, {load_module, emqx_channel, brutal_purge, soft_purge, []}, @@ -413,6 +419,7 @@ {load_module, emqx_plugins, brutal_purge, soft_purge, []} ]}, {<<"4.2.10">>, [ + {load_module, emqx_access_rule, brutal_purge, soft_purge, []}, {load_module, emqx_message, brutal_purge, soft_purge, []}, {load_module, emqx_channel, brutal_purge, soft_purge, []}, {load_module, emqx_frame, brutal_purge, soft_purge, []},