Affects Version/s: proton-j-0.30.0, proton-j-0.31.0, proton-j-0.32.0, proton-j-0.33.0
Fix Version/s: proton-j-0.33.1
Environment:OS: RHEL 7.2
JRE: OpenJDK Runtime Environment (build 1.8.0_102-b14)
proton-j 0.32.0 and 0.33.0
qpid-jms-client 0.41.0 and 0.42.0
While encoding a small/array8 primitive array with >=128 bytes content (and obviously <=255 bytes given array8 type), an exception will be thrown. The array size is being stored in a byte variable, which can be negative, for later writing out as a raw 1byte size field during the encoding. The value was mistakengly also being used to facilitate checking for buffer capacity or expansion, which can fail due to the potentially negative value if the array is in the appropate size range.
This was introduced during proton-j 0.30.0 changes for
Receiving a AMQP short array (length less than 256) with qpid-jms-client causes this error in log:
[AmqpProvider :(1):[amqp://localhost:5672]] WARN o.a.q.j.p.a.AmqpConsumer - Error on transform: minWritableBytes: -92 (expected: >= 0)
The message is still kept in queue.