[Java 0-8/0-9] Overlong AMQShortStrings incorrectly encoded and cause Frame 
corruption
--------------------------------------------------------------------------------------

                 Key: QPID-2158
                 URL: https://issues.apache.org/jira/browse/QPID-2158
             Project: Qpid
          Issue Type: Bug
          Components: Java Common
    Affects Versions: M4, M3, M2.1, M2, 0.5
            Reporter: Rob Godfrey


AMQP defines as shortstr as a 1-octet length followed by that many octets of 
data.  In java we use the AMQShortString class to represent this datatype in 
the 0-8/0-9 codebase.  Unfortunately the AMQShortString class does not check to 
ensure that on construction its total length is less than 256 characters.  In 
cases where an overlong  AMQShortString is created and subsequently encoded, 
the size is written out as (byte) length, which means that a String of length 
296 will be encoded as an octect with value 40 (296 & 255) followed by 296 
octets of data.  Upon decoding this causes a frame decoding error.

We should check on construction of an AMQShortString that the underlying data 
does not have length > 255, and that if it does we should throw an appropriate 
exception (IndexOutOfBoundsException?)

[This error was discovered when a long queue name was created, and that queue 
subsequently used as the destination for a reply-to field... the encoding of a 
reply-to copies the queue name twice (once as the queue name, once as the 
binding-key]

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:[email protected]

Reply via email to