[ 
https://issues.apache.org/jira/browse/THRIFT-1205?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13051123#comment-13051123
 ] 

Bryan Duxbury commented on THRIFT-1205:
---------------------------------------

The "partial allocation" approach actually isn't workable. The Thrift 
deserialization code depends on the call stack for keeping state, so if it runs 
out of data, there's no nonblocking way for it to give up control and wait for 
more data to arrive. The whole premise of the nonblocking server is that we can 
know when all the bytes for a message have arrived without doing any actual 
deserialization, hence the requirement for framed transport.

> port server unduly fragile with arbitrary input
> -----------------------------------------------
>
>                 Key: THRIFT-1205
>                 URL: https://issues.apache.org/jira/browse/THRIFT-1205
>             Project: Thrift
>          Issue Type: Bug
>          Components: Java - Library
>    Affects Versions: 0.6.1
>         Environment: javac 1.5.0_19, OS X 10.4.11
>            Reporter: Toby Thain
>            Priority: Critical
>              Labels: security
>
> Telnetting to the port and type a couple of arbitrary characters crashes the 
> server almost immediately as follows. I haven't glanced at the relevant code. 
> Is this reproducible on other platforms?
> {noformat}
> $ ./run-server.sh 
> Starting the simple server...
> Exception in thread "Thread-0" java.lang.OutOfMemoryError: Java heap space
>         at 
> org.apache.thrift.protocol.TBinaryProtocol.readStringBody(TBinaryProtocol.java:353)
>         at 
> org.apache.thrift.protocol.TBinaryProtocol.readMessageBegin(TBinaryProtocol.java:215)
>         at SimonSays$Processor.process(Unknown Source)
>         at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:70)
>         at JavaServer.simple(Unknown Source)
>         at JavaServer$1.run(Unknown Source)
>         at java.lang.Thread.run(Thread.java:613)
> {noformat}

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to