Description
The EMPTY_* constants in the IoBuffer class can be made mutable (by using the setAutoExpand(true) method call) which can result in those constant buffers no longer being empty. This can obviously cause a multitude of data errors.
See this JUnit test case for an example:
import junit.framework.TestCase;
import org.apache.mina.core.buffer.IoBuffer;
public class TestIoBuffer extends TestCase {
public void testIoBufferAllocate()
{ IoBuffer buf = IoBuffer.allocate(0).setAutoExpand(true); buf.putInt(1234); buf.flip(); buf = IoBuffer.allocate(0); assertEquals(0, buf.remaining()); }public void testEmptyIoBuffer()
{ IoBuffer buf = IoBuffer.EMPTY_BUFFER.setAutoExpand(true); buf.putInt(1234); buf.flip(); buf = IoBuffer.EMPTY_BUFFER; assertEquals(0, buf.remaining()); }}