Description
Prior to 2.5.0, artemis incorrectly always checked the perms for Non Durable on createSharedQueue , even if the queue being created was a Durable queue.
securityCheck(address, name, CheckType.CREATE_NON_DURABLE_QUEUE, this);
In 2.5.0+ this has been corrected, so it checks the permissions appropriately for the durability.
securityCheck(address, name, durable ? CheckType.CREATE_DURABLE_QUEUE : CheckType.CREATE_NON_DURABLE_QUEUE, this);
This though has exposed that in some area's of the Core client code, and also AMQP, and OpenWire that the code isn't checking that queue exists before calling to create it, meaning a client with consume permission but without create durable queue permissions, would fail but should not as the queue exists.
Also it was noted on creating the test case to prove this that AMQP JMS Client when security exception occurs, was not correctly throwing JMSSecurityException, this is due to the broker not returning the correct AMQP error code, in these circumstances.