hadoop-common-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "John Doe (JIRA)" <j...@apache.org>
Subject [jira] [Created] (HADOOP-15424) XDR.ensureFreeSpace hangs when a corrupted bytebuffer passed into the constructor
Date Fri, 27 Apr 2018 18:22:00 GMT
John Doe created HADOOP-15424:
---------------------------------

             Summary: XDR.ensureFreeSpace hangs when a corrupted bytebuffer passed into the
constructor
                 Key: HADOOP-15424
                 URL: https://issues.apache.org/jira/browse/HADOOP-15424
             Project: Hadoop Common
          Issue Type: Bug
          Components: nfs
    Affects Versions: 2.5.0
            Reporter: John Doe


When a corrupted bytebuffer passed into the constructor, i.e., the bytebuffer.capacity =
0, the while loop in XDR.ensureFreeSpace function hangs endlessly. 
This is because the loop stride (newCapacity) is always 0, making the loop index (newRemaining)
always less than the upper bound (size).
Here is the code snippet.

{code:java}
  public XDR(ByteBuffer buf, State state) {
    this.buf = buf;
    this.state = state;
  }

  private void ensureFreeSpace(int size) {
    Preconditions.checkState(state == State.WRITING);
    if (buf.remaining() < size) {
      int newCapacity = buf.capacity() * 2;
      int newRemaining = buf.capacity() + buf.remaining();

      while (newRemaining < size) {
        newRemaining += newCapacity;
        newCapacity *= 2;
      }

      ByteBuffer newbuf = ByteBuffer.allocate(newCapacity);
      buf.flip();
      newbuf.put(buf);
      buf = newbuf;
    }
  }
{code}

 



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

---------------------------------------------------------------------
To unsubscribe, e-mail: common-issues-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-issues-help@hadoop.apache.org


Mime
View raw message