java-topology/defects/rabbitmq/patch/rmq-0003-check-declare-args-sets.patch

22 lines
1.5 KiB
Diff

# UNDF: UNDF-2026-000000360
--- a/deps/rabbit/src/rabbit_amqqueue.erl
+++ b/deps/rabbit/src/rabbit_amqqueue.erl
@@ -902,12 +902,14 @@ check_declare_arguments(QueueName, Args0, DefaultQueueType) ->
check_arguments_type_and_value(QueueName, Args, [{<<"x-queue-type">>, fun check_queue_type/2}]),
Type = get_queue_type(Args),
QueueTypeArgs = rabbit_queue_type:arguments(queue_arguments, Type),
- Validators = lists:filter(fun({Arg, _}) -> lists:member(Arg, QueueTypeArgs) end, declare_args()),
+ QueueTypeArgsSet = sets:from_list(QueueTypeArgs, [{version, 2}]),
+ Validators = lists:filter(fun({Arg, _}) -> sets:is_element(Arg, QueueTypeArgsSet) end, declare_args()),
check_arguments_type_and_value(QueueName, Args, Validators),
InvalidArgs = rabbit_queue_type:arguments(queue_arguments) -- QueueTypeArgs,
check_arguments_key(QueueName, Type, Args, InvalidArgs).
check_consume_arguments(QueueName, QueueType, Args) ->
QueueTypeArgs = rabbit_queue_type:arguments(consumer_arguments, QueueType),
- Validators = lists:filter(fun({Arg, _}) -> lists:member(Arg, QueueTypeArgs) end, consume_args()),
+ QueueTypeArgsSet = sets:from_list(QueueTypeArgs, [{version, 2}]),
+ Validators = lists:filter(fun({Arg, _}) -> sets:is_element(Arg, QueueTypeArgsSet) end, consume_args()),
check_arguments_type_and_value(QueueName, Args, Validators),
InvalidArgs = rabbit_queue_type:arguments(consumer_arguments) -- QueueTypeArgs,
check_arguments_key(QueueName, QueueType, Args, InvalidArgs).