Robert Balent created AMQ-4258:
----------------------------------

             Summary: Endless loop when received incorrect AMQP message
                 Key: AMQ-4258
                 URL: https://issues.apache.org/jira/browse/AMQ-4258
             Project: ActiveMQ
          Issue Type: Bug
          Components: Transport
    Affects Versions: 5.8.0
            Reporter: Robert Balent
            Priority: Critical
         Attachments: patch1.txt

When you send incorrect message to AMQP transform, it will stuck in endless 
loop and write lot of error messages to console output.

This way, you can send numbers of incorrect messages and ActiveMQ will create 
new thread for each of them. This way can attacker create thousands of threads 
in few minutes and completely overload server machine.

Problem is in org.apache.activemq.transport.amqp.AmqpProtocolConverter class. 
It throws exception(exception.txt) and loop never ends:

Line 158:
int count = protonTransport.input(frame.data, frame.offset, frame.length);

Two solutions are possible:

1. Add "return" statement to catch block (patch1.txt).
2. Run "frame.moveHead(count);" in finally block with some default positive 
count (patch2.txt)

I would prefer the first variant.

This happens when you try to send message from client with older version of 
AMQP protocol.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to