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

Niraj Tolia commented on THRIFT-1643:
-------------------------------------

Doesn't this also impact TCompactProtocol.readString() because it uses 
readBinary() which does a "new byte[length]"? In this case, length is derived 
from readVarint32().

{code:java}
  private byte[] readBinary(int length) throws TException {
    if (length == 0) return new byte[0];

    byte[] buf = new byte[length];
    trans_.readAll(buf, 0, length);
    return buf;
  }
{code}
                
> Denial of Service attack in TBinaryProtocol.readString
> ------------------------------------------------------
>
>                 Key: THRIFT-1643
>                 URL: https://issues.apache.org/jira/browse/THRIFT-1643
>             Project: Thrift
>          Issue Type: Bug
>          Components: Java - Library
>    Affects Versions: 0.6.1, 0.8
>         Environment: All
>            Reporter: Devesh Parekh
>            Priority: Critical
>              Labels: security
>         Attachments: Attack.java, Foo.thrift
>
>   Original Estimate: 24h
>  Remaining Estimate: 24h
>
> In readString, if the string field's size is greater than the number of bytes 
> remaining in the byte array to deserialize, libthrift will happily allocate a 
> byte array of that size in readStringBody, filling the heap.

--
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