Bug#1104933: activemq: diff for NMU version 5.17.6+dfsg-1.1 (2/48)
From
Emmanuel Arias@1:229/2 to
All on Sun Jun 1 01:20:01 2025
[continued from previous message]
+ .../v10/BaseDataStreamMarshaller.java | 12 +-
+ .../v10/ConnectionControlMarshaller.java | 4 +-
+ .../openwire/v10/MessageMarshaller.java | 8 +-
+ .../v10/PartialCommandMarshaller.java | 4 +-
+ .../v10/WireFormatInfoMarshaller.java | 4 +-
+ .../v10/XATransactionIdMarshaller.java | 8 +-
+ .../v11/BaseDataStreamMarshaller.java | 12 +-
+ .../v11/ConnectionControlMarshaller.java | 4 +-
+ .../openwire/v11/MessageMarshaller.java | 8 +-
+ .../v11/PartialCommandMarshaller.java | 4 +-
+ .../v11/WireFormatInfoMarshaller.java | 4 +-
+ .../v11/XATransactionIdMarshaller.java | 8 +-
+ .../v12/BaseDataStreamMarshaller.java | 12 +-
+ .../v12/ConnectionControlMarshaller.java | 4 +-
+ .../openwire/v12/MessageMarshaller.java | 8 +-
+ .../v12/PartialCommandMarshaller.java | 4 +-
+ .../v12/WireFormatInfoMarshaller.java | 4 +-
+ .../v12/XATransactionIdMarshaller.java | 8 +-
+ .../openwire/v9/BaseDataStreamMarshaller.java | 12 +-
+ .../v9/ConnectionControlMarshaller.java | 4 +-
+ .../openwire/v9/MessageMarshaller.java | 8 +-
+ .../openwire/v9/PartialCommandMarshaller.java | 4 +-
+ .../openwire/v9/WireFormatInfoMarshaller.java | 4 +-
+ .../v9/XATransactionIdMarshaller.java | 8 +-
+ .../apache/activemq/util/ByteSequence.java | 12 +
+ .../activemq/util/IOExceptionSupport.java | 8 +-
+ .../activemq/openwire/OpenWireUtilTest.java | 119 ++++++++
+ .../openwire/OpenWireValidationTest.java | 257 ++++++++++++++++--
+ activemq-openwire-legacy/pom.xml | 5 +
+ .../openwire/v2/BaseDataStreamMarshaller.java | 12 +-
+ .../openwire/v2/MessageMarshaller.java | 8 +-
+ .../openwire/v2/PartialCommandMarshaller.java | 4 +-
+ .../openwire/v2/WireFormatInfoMarshaller.java | 4 +-
+ .../v2/XATransactionIdMarshaller.java | 8 +-
+ .../openwire/v3/BaseDataStreamMarshaller.java | 12 +-
+ .../openwire/v3/MessageMarshaller.java | 8 +-
+ .../openwire/v3/PartialCommandMarshaller.java | 4 +-
+ .../openwire/v3/WireFormatInfoMarshaller.java | 4 +-
+ .../v3/XATransactionIdMarshaller.java | 8 +-
+ .../openwire/v4/BaseDataStreamMarshaller.java | 12 +-
+ .../openwire/v4/MessageMarshaller.java | 8 +-
+ .../openwire/v4/PartialCommandMarshaller.java | 4 +-
+ .../openwire/v4/WireFormatInfoMarshaller.java | 4 +-
+ .../v4/XATransactionIdMarshaller.java | 8 +-
+ .../openwire/v5/BaseDataStreamMarshaller.java | 12 +-
+ .../openwire/v5/MessageMarshaller.java | 8 +-
+ .../openwire/v5/PartialCommandMarshaller.java | 4 +-
+ .../openwire/v5/WireFormatInfoMarshaller.java | 4 +-
+ .../v5/XATransactionIdMarshaller.java | 8 +-
+ .../openwire/v6/BaseDataStreamMarshaller.java | 12 +-
+ .../openwire/v6/MessageMarshaller.java | 8 +-
+ .../openwire/v6/PartialCommandMarshaller.java | 4 +-
+ .../openwire/v6/WireFormatInfoMarshaller.java | 4 +-
+ .../v6/XATransactionIdMarshaller.java | 8 +-
+ .../openwire/v7/BaseDataStreamMarshaller.java | 12 +-
+ .../openwire/v7/MessageMarshaller.java | 8 +-
+ .../openwire/v7/PartialCommandMarshaller.java | 4 +-
+ .../openwire/v7/WireFormatInfoMarshaller.java | 4 +-
+ .../v7/XATransactionIdMarshaller.java | 8 +-
+ .../openwire/v8/BaseDataStreamMarshaller.java | 12 +-
+ .../v8/ConnectionControlMarshaller.java | 4 +-
+ .../openwire/v8/MessageMarshaller.java | 8 +-
+ .../openwire/v8/PartialCommandMarshaller.java | 4 +-
+ .../openwire/v8/WireFormatInfoMarshaller.java | 4 +-
+ .../v8/XATransactionIdMarshaller.java | 8 +-
+ .../OpenWireLegacyValidationTest.java | 46 +++-
+ pom.xml | 6 +
+ 75 files changed, 822 insertions(+), 257 deletions(-)
+ create mode 100644 activemq-client/src/test/java/org/apache/activemq/openwire/OpenWireUtilTest.java
+
+--- a/activemq-client/pom.xml
++++ b/activemq-client/pom.xml
+@@ -89,6 +89,11 @@
+ <artifactId>geronimo-annotation_1.3_spec</artifactId>
+ <version>1.0</version>
+ </dependency>
++ <dependency>
++ <groupId>org.javassist</groupId>
++ <artifactId>javassist</artifactId>
++ <scope>test</scope>
++ </dependency>
+
+ </dependencies>
+
+--- a/activemq-client/src/main/java/org/apache/activemq/openwire/OpenWireFormat.java
++++ b/activemq-client/src/main/java/org/apache/activemq/openwire/OpenWireFormat.java
+@@ -48,7 +48,7 @@
+ private static final int MARSHAL_CACHE_SIZE = Short.MAX_VALUE / 2;
+ private static final int MARSHAL_CACHE_FREE_SPACE = 100;
+
+- private DataStreamMarshaller dataMarshallers[];
++ private DataStreamMarshaller[] dataMarshallers;
+ private int version;
+ private boolean stackTraceEnabled;
+ private boolean tcpNoDelayEnabled;
+@@ -61,13 +61,22 @@
+ // The following fields are used for value caching
+ private short nextMarshallCacheIndex;
+ private short nextMarshallCacheEvictionIndex;
+- private Map<DataStructure, Short> marshallCacheMap = new HashMap<DataStructure, Short>();
++ private Map<DataStructure, Short> marshallCacheMap = new HashMap<>();
+ private DataStructure marshallCache[] = null;
+ private DataStructure unmarshallCache[] = null;
+- private DataByteArrayOutputStream bytesOut = new DataByteArrayOutputStream();
+- private DataByteArrayInputStream bytesIn = new DataByteArrayInputStream();
++ private final DataByteArrayOutputStream bytesOut = new DataByteArrayOutputStream();
++ private final DataByteArrayInputStream bytesIn = new DataByteArrayInputStream();
+ private WireFormatInfo preferedWireFormatInfo;
+
++ // Used to track the currentFrameSize for validation during unmarshalling ++ // Ideally we would pass the MarshallingContext directly to the marshalling methods,
++ // however this would require modifying the DataStreamMarshaller interface which would result
++ // in hundreds of existing methods having to be updated so this allows avoiding that and
++ // tracking the state without breaking the existing API.
++ // Note that while this is currently only used during unmarshalling, but if necessary could
++ // be extended in the future to be used during marshalling as well.
++ private final ThreadLocal<MarshallingContext> marshallingContext = new ThreadLocal<>();
++
+ public OpenWireFormat() {
+ this(DEFAULT_STORE_VERSION);
+ }
+@@ -191,26 +200,23 @@
+ @Override
+ public synchronized Object unmarshal(ByteSequence sequence) throws IOException {
+ bytesIn.restart(sequence);
+- // DataInputStream dis = new DataInputStream(new
+- // ByteArrayInputStream(sequence));
+
+- if (!sizePrefixDisabled) {
+- int size = bytesIn.readInt();
+- if (sequence.getLength() - 4 != size) {
+- // throw new IOException("Packet size does not match marshaled
+- // size");
+- }
++ try {
++ final var context = new MarshallingContext();
++ marshallingContext.set(context);
+
+- if (maxFrameSizeEnabled && size > maxFrameSize) {
+- throw IOExceptionSupport.createFrameSizeException(size, maxFrameSize);
++ if (!sizePrefixDisabled) {
[continued in next message]
--- SoupGate-Win32 v1.05
* Origin: you cannot sedate... all the things you hate (1:229/2)