[
https://issues.apache.org/jira/browse/HBASE-17258?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
ramkrishna.s.vasudevan updated HBASE-17258:
-------------------------------------------
Status: Patch Available (was: Open)
> MultiByteBuff#getXXX() has issues
> ---------------------------------
>
> Key: HBASE-17258
> URL: https://issues.apache.org/jira/browse/HBASE-17258
> Project: HBase
> Issue Type: Bug
> Affects Versions: 2.0.0
> Reporter: ramkrishna.s.vasudevan
> Assignee: ramkrishna.s.vasudevan
> Priority: Critical
> Attachments: HBASE-17258.patch
>
>
> MBB#getInt() - the relative getXXX() API has issues.
> {code}
> int remaining = this.curItem.remaining();
> if (remaining >= Bytes.SIZEOF_INT) {
> return this.curItem.getInt();
> }
> if (remaining == 0) {
> if (items.length - 1 == this.curItemIndex) {
> // means cur item is the last one and we wont be able to read a long.
> Throw exception
> throw new BufferUnderflowException();
> }
> this.curItemIndex++;
> this.curItem = this.items[this.curItemIndex];
> return this.curItem.getInt();
> }
> {code}
> Now here if the curItem does not have anything remaining in it we just go to
> the nextItem and from that we do a getInt. But we don't check if that item is
> big enough to return an int. This may not happen in most of the real cases
> but as an API it should handle that case. Since MBB are now used in the
> RpcServer#response there could be some on demand BB created that are smaller
> in sizes and it could lead to issues.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)