You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@thrift.apache.org by "Bryan Duxbury (JIRA)" <ji...@apache.org> on 2011/03/21 19:19:05 UTC
[jira] [Closed] (THRIFT-1101) bytebuffer length calculation in
TBinaryProtocol writeBinary
[ https://issues.apache.org/jira/browse/THRIFT-1101?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Bryan Duxbury closed THRIFT-1101.
---------------------------------
Resolution: Fixed
Fix Version/s: 0.7
Assignee: Bryan Duxbury
I just committed a fix to this in both the Binary and Compact protocols. Thanks for bringing it to my attention, Dave.
> bytebuffer length calculation in TBinaryProtocol writeBinary
> ------------------------------------------------------------
>
> Key: THRIFT-1101
> URL: https://issues.apache.org/jira/browse/THRIFT-1101
> Project: Thrift
> Issue Type: Bug
> Components: Java - Library
> Reporter: Dave
> Assignee: Bryan Duxbury
> Fix For: 0.7
>
>
> In TBinaryProtocol writeBinary, the length calculation appears incorrect:
> length = bin.limit() - bin.position() - bin.arrayOffset();
> This subtraction of arrayOffset can cause a negative length on a sliced buffer. For example:
> ByteBuffer b = ByteBuffer.allocate(15);
> b.put("1234567890".getBytes());
> ByteBuffer b2 = b.slice();
> b2.put("testx".getBytes());
> b2.rewind();
> So b2's length is lim-pos-offset = 5-0-10 = -5.
> I believe we just want lim-pos.
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira