summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Klishin <michael@clojurewerkz.org>2021-12-20 12:56:38 +0500
committerMichael Klishin <michael@clojurewerkz.org>2021-12-20 13:07:18 +0500
commitc5aab11ba3b62f865e731032c9b0c297dceead51 (patch)
treed29568877379fd13787445818a3b12b97b183e82
parent88657b047b56a993cba0419b77b4289ea3db1442 (diff)
downloadrabbitmq-server-git-c5aab11ba3b62f865e731032c9b0c297dceead51.tar.gz
Merge branch 'polaris-alioth-prevent_unnamed_policy_when_loading_definition'
(cherry picked from commit 11c892dd942dd691fc1a2b5136f0961873f8c2d6) Conflicts: deps/rabbit/test/definition_import_SUITE.erl
-rw-r--r--deps/rabbit/src/rabbit_definitions.erl4
-rw-r--r--deps/rabbit/test/definition_import_SUITE.erl6
-rw-r--r--deps/rabbit/test/definition_import_SUITE_data/failing_case17.json19
3 files changed, 28 insertions, 1 deletions
diff --git a/deps/rabbit/src/rabbit_definitions.erl b/deps/rabbit/src/rabbit_definitions.erl
index cdb52f069c..1aa74f71d1 100644
--- a/deps/rabbit/src/rabbit_definitions.erl
+++ b/deps/rabbit/src/rabbit_definitions.erl
@@ -444,6 +444,10 @@ add_policy(Param, Username) ->
add_policy(VHost, Param, Username) ->
Key = maps:get(name, Param, undefined),
+ case Key of
+ undefined -> exit(rabbit_misc:format("policy in virtual host '~s' has undefined name", [VHost]));
+ _ -> ok
+ end,
case rabbit_policy:set(
VHost, Key, maps:get(pattern, Param, undefined),
case maps:get(definition, Param, undefined) of
diff --git a/deps/rabbit/test/definition_import_SUITE.erl b/deps/rabbit/test/definition_import_SUITE.erl
index 928a49ba14..1580a9f0eb 100644
--- a/deps/rabbit/test/definition_import_SUITE.erl
+++ b/deps/rabbit/test/definition_import_SUITE.erl
@@ -45,7 +45,9 @@ groups() ->
import_case12,
import_case13,
import_case14,
- import_case16
+ %% case 15 is for v3.9.x+ only
+ import_case16,
+ import_case17
]},
{boot_time_import, [], [
import_on_a_booting_node
@@ -177,6 +179,8 @@ import_case16(Config) ->
{skip, "Should not run in mixed version environments"}
end.
+import_case17(Config) -> import_invalid_file_case(Config, "failing_case17").
+
export_import_round_trip_case1(Config) ->
case rabbit_ct_helpers:is_mixed_versions() of
false ->
diff --git a/deps/rabbit/test/definition_import_SUITE_data/failing_case17.json b/deps/rabbit/test/definition_import_SUITE_data/failing_case17.json
new file mode 100644
index 0000000000..4776408833
--- /dev/null
+++ b/deps/rabbit/test/definition_import_SUITE_data/failing_case17.json
@@ -0,0 +1,19 @@
+{
+ "vhosts": [
+ {
+ "name": "\/"
+ }
+ ],
+ "policies": [
+ {
+ "vhost": "\/",
+ "pattern": "^project-nd-ns-",
+ "apply-to": "queues",
+ "definition": {
+ "expires": 120000,
+ "max-length": 10000
+ },
+ "priority": 1
+ }
+ ]
+}