From 96bb6e7d88b2f20da935bc265dc32fb7e1e3726e Mon Sep 17 00:00:00 2001 From: Thales Macedo Garitezi Date: Tue, 7 May 2024 10:04:56 -0300 Subject: [PATCH] fix(message validation): limit the length of validation name Fixes https://emqx.atlassian.net/browse/EMQX-12299 --- .../src/emqx_message_validation_schema.erl | 14 +------------- .../test/emqx_message_validation_tests.erl | 5 +++-- 2 files changed, 4 insertions(+), 15 deletions(-) diff --git a/apps/emqx_message_validation/src/emqx_message_validation_schema.erl b/apps/emqx_message_validation/src/emqx_message_validation_schema.erl index f151cdf62..788bb49a1 100644 --- a/apps/emqx_message_validation/src/emqx_message_validation_schema.erl +++ b/apps/emqx_message_validation/src/emqx_message_validation_schema.erl @@ -18,8 +18,6 @@ api_schema/1 ]). --export([validate_name/1]). - %%------------------------------------------------------------------------------ %% Type declarations %%------------------------------------------------------------------------------ @@ -55,7 +53,7 @@ fields(validation) -> binary(), #{ required => true, - validator => fun validate_name/1, + validator => fun emqx_resource:validate_name/1, desc => ?DESC("name") } )}, @@ -200,16 +198,6 @@ ensure_array(undefined, _) -> undefined; ensure_array(L, _) when is_list(L) -> L; ensure_array(B, _) -> [B]. -validate_name(Name) -> - %% see `MAP_KEY_RE' in hocon_tconf - RE = <<"^[A-Za-z0-9]+[A-Za-z0-9-_]*$">>, - case re:run(Name, RE, [{capture, none}]) of - match -> - ok; - nomatch -> - {error, <<"must conform to regex: ", RE/binary>>} - end. - validate_sql(SQL) -> case emqx_message_validation:parse_sql_check(SQL) of {ok, _Parsed} -> diff --git a/apps/emqx_message_validation/test/emqx_message_validation_tests.erl b/apps/emqx_message_validation/test/emqx_message_validation_tests.erl index 7c3dfc9d8..a7bdbc4d6 100644 --- a/apps/emqx_message_validation/test/emqx_message_validation_tests.erl +++ b/apps/emqx_message_validation/test/emqx_message_validation_tests.erl @@ -195,7 +195,6 @@ invalid_names_test_() -> ?_assertThrow( {_Schema, [ #{ - reason := <<"must conform to regex:", _/binary>>, kind := validation_error, path := "message_validation.validations.1.name" } @@ -209,7 +208,9 @@ invalid_names_test_() -> <<"name!">>, <<"some name">>, <<"nãme"/utf8>>, - <<"test_哈哈"/utf8>> + <<"test_哈哈"/utf8>>, + %% long name + binary:copy(<<"a">>, 256) ] ].