Skip to content

Commit 6fe0db4

Browse files
windieScottmitch
authored andcommitted
Fix IndexOutOfBoundsException for CompositeByteBuf netty#4679
Motivation: Modifications: Use the correct start index Result: Fixes netty#4679
1 parent 5c05629 commit 6fe0db4

File tree

2 files changed

+14
-1
lines changed

2 files changed

+14
-1
lines changed

buffer/src/main/java/io/netty/buffer/ByteBufUtil.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -548,7 +548,7 @@ static String decodeString(ByteBuf src, int readerIndex, int len, Charset charse
548548
try {
549549
buffer.writeBytes(src, readerIndex, len);
550550
// Use internalNioBuffer(...) to reduce object creation.
551-
decodeString(decoder, buffer.internalNioBuffer(readerIndex, len), dst);
551+
decodeString(decoder, buffer.internalNioBuffer(0, len), dst);
552552
} finally {
553553
// Release the temporary buffer again.
554554
buffer.release();

buffer/src/test/java/io/netty/buffer/ByteBufUtilTest.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -187,4 +187,17 @@ private static void testDecodeString(String text, Charset charset) {
187187
Assert.assertEquals(text, ByteBufUtil.decodeString(buffer, 0, buffer.readableBytes(), charset));
188188
buffer.release();
189189
}
190+
191+
@Test
192+
public void testToStringDoesNotThrowIndexOutOfBounds() {
193+
CompositeByteBuf buffer = Unpooled.compositeBuffer();
194+
try {
195+
byte[] bytes = "1234".getBytes(CharsetUtil.UTF_8);
196+
buffer.addComponent(Unpooled.buffer(bytes.length).writeBytes(bytes));
197+
buffer.addComponent(Unpooled.buffer(bytes.length).writeBytes(bytes));
198+
Assert.assertEquals("1234", buffer.toString(bytes.length, bytes.length, CharsetUtil.UTF_8));
199+
} finally {
200+
buffer.release();
201+
}
202+
}
190203
}

0 commit comments

Comments
 (0)