From 5ac842b6573edbdb2bab82e07cf8110e5db46588 Mon Sep 17 00:00:00 2001 From: JianBo He Date: Mon, 25 Apr 2022 21:22:17 +0800 Subject: [PATCH] fix(authn): avoid crashing emqx_authentication process due to un-safe call --- apps/emqx/src/emqx_authentication.erl | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/apps/emqx/src/emqx_authentication.erl b/apps/emqx/src/emqx_authentication.erl index 71bf18183..92bb66dfd 100644 --- a/apps/emqx/src/emqx_authentication.erl +++ b/apps/emqx/src/emqx_authentication.erl @@ -417,6 +417,7 @@ list_users(ChainName, AuthenticatorID, FuzzyParams) -> %%-------------------------------------------------------------------- init(_Opts) -> + process_flag(trap_exit, true), ok = emqx_config_handler:add_handler([?CONF_ROOT], ?MODULE), ok = emqx_config_handler:add_handler([listeners, '?', '?', ?CONF_ROOT], ?MODULE), {ok, #{hooked => false, providers => #{}}}. @@ -784,7 +785,12 @@ update_chain(ChainName, UpdateFun) -> [] -> {error, {not_found, {chain, ChainName}}}; [Chain] -> - UpdateFun(Chain) + try + UpdateFun(Chain) + catch + Class:Reason:Stk -> + {error, {exception, {Class, Reason, Stk}}} + end end. call_authenticator(ChainName, AuthenticatorID, Func, Args) ->