From ec2e28977600d131cf3b5eca4e5be5fbc71d3f23 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=91=A8=E5=AD=90=E5=8D=9A?= <349832309@qq.com> Date: Mon, 10 Dec 2018 11:13:25 +0800 Subject: [PATCH] Fix crash in emqx_acl_internal:filter/2 --- src/emqx_access_rule.erl | 3 ++- src/emqx_acl_internal.erl | 6 ++++-- test/emqx_access_SUITE.erl | 3 ++- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/emqx_access_rule.erl b/src/emqx_access_rule.erl index 1d3154735..47b20676b 100644 --- a/src/emqx_access_rule.erl +++ b/src/emqx_access_rule.erl @@ -47,7 +47,8 @@ compile({A, Who, Access, TopicFilters}) when ?ALLOW_DENY(A), ?PUBSUB(Access) -> {A, compile(who, Who), Access, [compile(topic, Topic) || Topic <- TopicFilters]}; compile(Rule) -> - emqx_logger:error("[ACCESS_RULE] Malformed rule: ~p", [Rule]). + emqx_logger:error("[ACCESS_RULE] Malformed rule: ~p", [Rule]), + {error, bad_rule}. compile(who, all) -> all; diff --git a/src/emqx_acl_internal.erl b/src/emqx_acl_internal.erl index 383967030..328993a78 100644 --- a/src/emqx_acl_internal.erl +++ b/src/emqx_acl_internal.erl @@ -60,10 +60,12 @@ load_rules_from_file(AclFile) -> ets:insert(?ACL_RULE_TAB, {all_rules, Terms}), ok; {error, Reason} -> - emqx_logger:error("[ACL_INTERNAL] Consult failed: ~p", [Reason]), + emqx_logger:error("[ACL_INTERNAL] Failed to read ~s: ~p", [AclFile, Reason]), {error, Reason} end. - + +filter(_PubSub, {error, _}) -> + false; filter(_PubSub, {allow, all}) -> true; filter(_PubSub, {deny, all}) -> diff --git a/test/emqx_access_SUITE.erl b/test/emqx_access_SUITE.erl index b49c90d80..5d0bcf049 100644 --- a/test/emqx_access_SUITE.erl +++ b/test/emqx_access_SUITE.erl @@ -355,7 +355,8 @@ compile_rule(_) -> {deny, all, subscribe, [ [<<"$SYS">>, '#'], ['#'] ]} = compile({deny, all, subscribe, ["$SYS/#", "#"]}), {allow, all} = compile({allow, all}), - {deny, all} = compile({deny, all}). + {deny, all} = compile({deny, all}), + {error, bad_rule} = compile({test, malformed}). match_rule(_) -> User = #{client_id => <<"testClient">>, username => <<"TestUser">>, peername => {{127,0,0,1}, 2948}},