[ 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