ramkrishna.s.vasudevan created HBASE-17258:
----------------------------------------------
Summary: 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
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)