Open
Description
Getting this stack trace on call to MinecraftCodecHelper.readChunkSection() with data from ClientboundLevelChunkWithLightPacket.getChunkData(). The packet parse is coming from a stock, vanilla Minecraft 1.20.1 server:
java.lang.IndexOutOfBoundsException: readerIndex(36599) + length(1) exceeds writerIndex(36599):
UnpooledHeapByteBuf(ridx: 36599, widx: 36599, cap: 36599/36599)
at io.netty.buffer.AbstractByteBuf.checkReadableBytes0(AbstractByteBuf.java:1477)
at io.netty.buffer.AbstractByteBuf.readByte(AbstractByteBuf.java:731)
at com.github.steveice10.packetlib.codec.BasePacketCodecHelper.readVarInt(BasePacketCodecHelper.java:20)
at com.github.steveice10.mc.protocol.codec.MinecraftCodecHelper.readDataPalette(MinecraftCodecHelper.java:689)
at com.github.steveice10.mc.protocol.codec.MinecraftCodecHelper.readChunkSection(MinecraftCodecHelper.java:738)
Debugging it, the cause appears to be an attempt to read past the end of the buffer here:
Noticed the following code is new:
// Eat up - can be seen on Hypixel as of 1.19.0
int length = this.readVarInt(buf);
for (int i = 0; i < length; i++) {
buf.readLong();
}
storage = null;
Changing it as follows fixes my problem. Looking for advice here.
// Eat up - can be seen on Hypixel as of 1.19.0
if (buf.readableBytes() > 0) {
int length = this.readVarInt(buf);
for (int i = 0; i < length; i++) {
buf.readLong();
}
}
storage = null;
Thoughts?
Metadata
Assignees
Labels
No labels
Activity