This is an automated email from the ASF dual-hosted git repository. jbonofre pushed a commit to branch activemq-6.1.x in repository https://gitbox.apache.org/repos/asf/activemq.git
commit 9bbafac4aae5af9300b3647886587132a1d92692 Author: Christopher L. Shannon <[email protected]> AuthorDate: Fri Nov 21 17:53:36 2025 -0500 AMQ-9810 - Add additional validation for MQTT wireformat Validate that the remaining length field is the correct number of bytes in MQTTWireFormat --- .../org/apache/activemq/transport/mqtt/MQTTCodec.java | 2 +- .../org/apache/activemq/transport/mqtt/MQTTCodecTest.java | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/activemq-mqtt/src/main/java/org/apache/activemq/transport/mqtt/MQTTCodec.java b/activemq-mqtt/src/main/java/org/apache/activemq/transport/mqtt/MQTTCodec.java index 06efe49910..66a0ae5eb0 100644 --- a/activemq-mqtt/src/main/java/org/apache/activemq/transport/mqtt/MQTTCodec.java +++ b/activemq-mqtt/src/main/java/org/apache/activemq/transport/mqtt/MQTTCodec.java @@ -25,7 +25,7 @@ import org.fusesource.mqtt.codec.MQTTFrame; public class MQTTCodec { - private static final int MAX_MULTIPLIER = (int) Math.pow(2, 21); + static final int MAX_MULTIPLIER = (int) Math.pow(2, 21); private final MQTTFrameSink frameSink; private final MQTTWireFormat wireFormat; diff --git a/activemq-mqtt/src/test/java/org/apache/activemq/transport/mqtt/MQTTCodecTest.java b/activemq-mqtt/src/test/java/org/apache/activemq/transport/mqtt/MQTTCodecTest.java index 3018010fa4..994bff4e67 100644 --- a/activemq-mqtt/src/test/java/org/apache/activemq/transport/mqtt/MQTTCodecTest.java +++ b/activemq-mqtt/src/test/java/org/apache/activemq/transport/mqtt/MQTTCodecTest.java @@ -330,6 +330,7 @@ public class MQTTCodecTest { fail("Parsing should have failed invalid remaining length field"); } catch (IOException e) { // expected + assertEquals("Remaining length exceeds 4 bytes", e.getMessage()); } } @@ -344,6 +345,20 @@ public class MQTTCodecTest { fail("Parsing should have failed invalid remaining length field"); } catch (IOException e) { // expected + assertEquals("Remaining length exceeds 4 bytes", e.getMessage()); + } + } + + @Test + public void testUnmarshalInvalidRemainingLengthField() { + try { + // Test Invalid remaining field checking using the marshaller + wireFormat.unmarshal(new ByteSequence(new byte[]{CONNECT.TYPE, (byte) 0x81, (byte) 0x81, + (byte) 0x81, (byte) 0x81})); + fail("Parsing should have failed invalid remaining length field"); + } catch (IOException e) { + // expected + assertEquals("Remaining length exceeds 4 bytes", e.getMessage()); } } --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected] For further information, visit: https://activemq.apache.org/contact
