From 1999076429a9c46e6d116f99c2d89a161a0d6a8b Mon Sep 17 00:00:00 2001 From: md_5 Date: Mon, 19 Nov 2012 19:34:08 +1100 Subject: [PATCH] Fix potential issue with maps and frames. --- src/main/java/net/md_5/mendax/PacketDefinitions.java | 4 ++-- src/main/java/net/md_5/mendax/datainput/Instruction.java | 2 +- src/main/java/net/md_5/mendax/datainput/MetaData.java | 8 +------- .../{UnsignedByteByte.java => UnsignedShortByte.java} | 4 ++-- 4 files changed, 6 insertions(+), 12 deletions(-) rename src/main/java/net/md_5/mendax/datainput/{UnsignedByteByte.java => UnsignedShortByte.java} (66%) diff --git a/src/main/java/net/md_5/mendax/PacketDefinitions.java b/src/main/java/net/md_5/mendax/PacketDefinitions.java index 967628c2d..961b3ade2 100644 --- a/src/main/java/net/md_5/mendax/PacketDefinitions.java +++ b/src/main/java/net/md_5/mendax/PacketDefinitions.java @@ -8,7 +8,7 @@ public class PacketDefinitions { public enum OpCode { - BOOLEAN, BULK_CHUNK, BYTE, BYTE_INT, DOUBLE, FLOAT, INT, INT_3, INT_BYTE, ITEM, LONG, METADATA, OPTIONAL_MOTION, SHORT, SHORT_BYTE, SHORT_ITEM, STRING, UBYTE_BYTE + BOOLEAN, BULK_CHUNK, BYTE, BYTE_INT, DOUBLE, FLOAT, INT, INT_3, INT_BYTE, ITEM, LONG, METADATA, OPTIONAL_MOTION, SHORT, SHORT_BYTE, SHORT_ITEM, STRING, USHORT_BYTE } static { @@ -100,7 +100,7 @@ public class PacketDefinitions { // // opCodes[0x82] = new OpCode[]{INT, SHORT, INT, STRING, STRING, STRING, STRING}; - opCodes[0x83] = new OpCode[]{SHORT, SHORT, SHORT_BYTE}; + opCodes[0x83] = new OpCode[]{SHORT, SHORT, USHORT_BYTE}; opCodes[0x84] = new OpCode[]{INT, SHORT, INT, BYTE, SHORT_BYTE}; // // diff --git a/src/main/java/net/md_5/mendax/datainput/Instruction.java b/src/main/java/net/md_5/mendax/datainput/Instruction.java index 323ca7521..af1485c16 100644 --- a/src/main/java/net/md_5/mendax/datainput/Instruction.java +++ b/src/main/java/net/md_5/mendax/datainput/Instruction.java @@ -22,7 +22,7 @@ abstract class Instruction { static final Instruction SHORT_BYTE = new ShortHeader(BYTE); static final Instruction SHORT_ITEM = new ShortHeader(ITEM); static final Instruction STRING = new ShortHeader(new Jump(2)); - static final Instruction UBYTE_BYTE = new UnsignedByteByte(); + static final Instruction USHORT_BYTE = new UnsignedShortByte(); // Illegal forward references below this line static final Instruction BYTE_INT = new ByteHeader(INT); diff --git a/src/main/java/net/md_5/mendax/datainput/MetaData.java b/src/main/java/net/md_5/mendax/datainput/MetaData.java index c74fa3ff3..bc03f4e6c 100644 --- a/src/main/java/net/md_5/mendax/datainput/MetaData.java +++ b/src/main/java/net/md_5/mendax/datainput/MetaData.java @@ -27,13 +27,7 @@ class MetaData extends Instruction { STRING.read(in); break; case 5: - if (in.readShort() > 0) { - skip(in, 3); - short len = in.readShort(); - if (len > 0 ) { - skip(in, len); - } - } + ITEM.read(in); break; case 6: skip(in, 12); // int, int, int diff --git a/src/main/java/net/md_5/mendax/datainput/UnsignedByteByte.java b/src/main/java/net/md_5/mendax/datainput/UnsignedShortByte.java similarity index 66% rename from src/main/java/net/md_5/mendax/datainput/UnsignedByteByte.java rename to src/main/java/net/md_5/mendax/datainput/UnsignedShortByte.java index 46a97ec72..ec8812949 100644 --- a/src/main/java/net/md_5/mendax/datainput/UnsignedByteByte.java +++ b/src/main/java/net/md_5/mendax/datainput/UnsignedShortByte.java @@ -3,11 +3,11 @@ package net.md_5.mendax.datainput; import java.io.DataInput; import java.io.IOException; -public class UnsignedByteByte extends Instruction { +public class UnsignedShortByte extends Instruction { @Override void read(DataInput in) throws IOException { - int size = in.readUnsignedByte(); + int size = in.readUnsignedShort(); skip(in, size); } }