Harsh J created THRIFT-2660:
-------------------------------

             Summary: Validate the bytes received in TSaslTransport
                 Key: THRIFT-2660
                 URL: https://issues.apache.org/jira/browse/THRIFT-2660
             Project: Thrift
          Issue Type: Bug
          Components: Java - Library
    Affects Versions: 0.9
            Reporter: Harsh J
         Attachments: THRIFT-2660.patch

In TSaslTransport#receiveSaslMessage, we are doing two things incorrectly:

- Not validating the status byte code.
- Not validating the decoded payload size integer before allocating a whole 
array with it.

The latter especially is bad when a network security software sends a thrift 
server port some garbage data, causing it to receive failures like:

{code}
java.lang.OutOfMemoryError: Java heap space
        at 
org.apache.thrift.transport.TSaslTransport.receiveSaslMessage(TSaslTransport.java:181)
        at 
org.apache.thrift.transport.TSaslServerTransport.handleSaslStartMessage(TSaslServerTransport.java:125)
        at 
org.apache.thrift.transport.TSaslTransport.open(TSaslTransport.java:253)
{code}

Or even,

{code}
ERROR org.apache.thrift.server.TThreadPoolServer: Error occurred during 
processing of message.
java.lang.NegativeArraySizeException
        at 
org.apache.thrift.transport.TSaslTransport.receiveSaslMessage(TSaslTransport.java:181)
        at 
org.apache.thrift.transport.TSaslServerTransport.handleSaslStartMessage(TSaslServerTransport.java:125)
        at 
org.apache.thrift.transport.TSaslTransport.open(TSaslTransport.java:253)
{code}



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to