From 10789c3c6078a07fca5d3e4793d4378fe6bd1d54 Mon Sep 17 00:00:00 2001 From: LOOHP Date: Wed, 26 Aug 2020 01:09:53 +0800 Subject: [PATCH] Fixed string reading not using UTF-8 --- pom.xml | 2 +- src/com/loohp/limbo/Server/Packets/PacketHandshakingIn.java | 3 ++- .../loohp/limbo/Server/Packets/PacketLoginInLoginStart.java | 3 ++- .../limbo/Server/Packets/PacketLoginInPluginMessaging.java | 2 +- src/com/loohp/limbo/Server/Packets/PacketPlayInChat.java | 3 ++- .../limbo/Server/Packets/PacketPlayInPluginMessaging.java | 2 +- .../loohp/limbo/Server/Packets/PacketPlayInTabComplete.java | 3 ++- src/com/loohp/limbo/Utils/DataTypeIO.java | 4 ++-- 8 files changed, 13 insertions(+), 9 deletions(-) diff --git a/pom.xml b/pom.xml index 185451d..e34fe08 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ 4.0.0 Limbo Limbo - 0.3.1-ALPHA + 0.3.2-ALPHA src diff --git a/src/com/loohp/limbo/Server/Packets/PacketHandshakingIn.java b/src/com/loohp/limbo/Server/Packets/PacketHandshakingIn.java index 88dd780..bd083fb 100644 --- a/src/com/loohp/limbo/Server/Packets/PacketHandshakingIn.java +++ b/src/com/loohp/limbo/Server/Packets/PacketHandshakingIn.java @@ -2,6 +2,7 @@ package com.loohp.limbo.Server.Packets; import java.io.DataInputStream; import java.io.IOException; +import java.nio.charset.StandardCharsets; import com.loohp.limbo.Utils.DataTypeIO; @@ -46,7 +47,7 @@ public class PacketHandshakingIn extends PacketIn { } public PacketHandshakingIn(DataInputStream in) throws IOException { - this(DataTypeIO.readVarInt(in), DataTypeIO.readString(in), in.readShort() & 0xFFFF, HandshakeType.fromNetworkId(DataTypeIO.readVarInt(in))); + this(DataTypeIO.readVarInt(in), DataTypeIO.readString(in, StandardCharsets.UTF_8), in.readShort() & 0xFFFF, HandshakeType.fromNetworkId(DataTypeIO.readVarInt(in))); } public int getProtocolVersion() { diff --git a/src/com/loohp/limbo/Server/Packets/PacketLoginInLoginStart.java b/src/com/loohp/limbo/Server/Packets/PacketLoginInLoginStart.java index 14dd958..a5a1f14 100644 --- a/src/com/loohp/limbo/Server/Packets/PacketLoginInLoginStart.java +++ b/src/com/loohp/limbo/Server/Packets/PacketLoginInLoginStart.java @@ -2,6 +2,7 @@ package com.loohp.limbo.Server.Packets; import java.io.DataInputStream; import java.io.IOException; +import java.nio.charset.StandardCharsets; import com.loohp.limbo.Utils.DataTypeIO; @@ -14,7 +15,7 @@ public class PacketLoginInLoginStart extends PacketIn { } public PacketLoginInLoginStart(DataInputStream in) throws IOException { - this(DataTypeIO.readString(in)); + this(DataTypeIO.readString(in, StandardCharsets.UTF_8)); } public String getUsername() { diff --git a/src/com/loohp/limbo/Server/Packets/PacketLoginInPluginMessaging.java b/src/com/loohp/limbo/Server/Packets/PacketLoginInPluginMessaging.java index 18d1600..43eefed 100644 --- a/src/com/loohp/limbo/Server/Packets/PacketLoginInPluginMessaging.java +++ b/src/com/loohp/limbo/Server/Packets/PacketLoginInPluginMessaging.java @@ -21,7 +21,7 @@ public class PacketLoginInPluginMessaging extends PacketIn { public PacketLoginInPluginMessaging(DataInputStream in, int packetLength, int packetId) throws IOException { messageId = DataTypeIO.readVarInt(in); - String rawChannel = DataTypeIO.readString(in); + String rawChannel = DataTypeIO.readString(in, StandardCharsets.UTF_8); channel = new NamespacedKey(rawChannel); int dataLength = packetLength - DataTypeIO.getVarIntLength(packetId) - DataTypeIO.getVarIntLength(messageId) - DataTypeIO.getStringLength(rawChannel, StandardCharsets.UTF_8); data = new byte[dataLength]; diff --git a/src/com/loohp/limbo/Server/Packets/PacketPlayInChat.java b/src/com/loohp/limbo/Server/Packets/PacketPlayInChat.java index 4d4a268..5ba0a26 100644 --- a/src/com/loohp/limbo/Server/Packets/PacketPlayInChat.java +++ b/src/com/loohp/limbo/Server/Packets/PacketPlayInChat.java @@ -2,6 +2,7 @@ package com.loohp.limbo.Server.Packets; import java.io.DataInputStream; import java.io.IOException; +import java.nio.charset.StandardCharsets; import com.loohp.limbo.Utils.DataTypeIO; @@ -14,7 +15,7 @@ public class PacketPlayInChat extends PacketIn { } public PacketPlayInChat(DataInputStream in) throws IOException { - this(DataTypeIO.readString(in)); + this(DataTypeIO.readString(in, StandardCharsets.UTF_8)); } public String getMessage() { diff --git a/src/com/loohp/limbo/Server/Packets/PacketPlayInPluginMessaging.java b/src/com/loohp/limbo/Server/Packets/PacketPlayInPluginMessaging.java index 2281920..f5b0f38 100644 --- a/src/com/loohp/limbo/Server/Packets/PacketPlayInPluginMessaging.java +++ b/src/com/loohp/limbo/Server/Packets/PacketPlayInPluginMessaging.java @@ -18,7 +18,7 @@ public class PacketPlayInPluginMessaging extends PacketIn { } public PacketPlayInPluginMessaging(DataInputStream in, int packetLength, int packetId) throws IOException { - String rawChannel = DataTypeIO.readString(in); + String rawChannel = DataTypeIO.readString(in, StandardCharsets.UTF_8); channel = new NamespacedKey(rawChannel); int dataLength = packetLength - DataTypeIO.getVarIntLength(packetId) - DataTypeIO.getStringLength(rawChannel, StandardCharsets.UTF_8); data = new byte[dataLength]; diff --git a/src/com/loohp/limbo/Server/Packets/PacketPlayInTabComplete.java b/src/com/loohp/limbo/Server/Packets/PacketPlayInTabComplete.java index 670b5c9..5c2b007 100644 --- a/src/com/loohp/limbo/Server/Packets/PacketPlayInTabComplete.java +++ b/src/com/loohp/limbo/Server/Packets/PacketPlayInTabComplete.java @@ -2,6 +2,7 @@ package com.loohp.limbo.Server.Packets; import java.io.DataInputStream; import java.io.IOException; +import java.nio.charset.StandardCharsets; import com.loohp.limbo.Utils.DataTypeIO; @@ -16,7 +17,7 @@ public class PacketPlayInTabComplete extends PacketIn { } public PacketPlayInTabComplete(DataInputStream in) throws IOException { - this(DataTypeIO.readVarInt(in), DataTypeIO.readString(in)); + this(DataTypeIO.readVarInt(in), DataTypeIO.readString(in, StandardCharsets.UTF_8)); } public int getId() { diff --git a/src/com/loohp/limbo/Utils/DataTypeIO.java b/src/com/loohp/limbo/Utils/DataTypeIO.java index 5019f82..a6a8ba9 100644 --- a/src/com/loohp/limbo/Utils/DataTypeIO.java +++ b/src/com/loohp/limbo/Utils/DataTypeIO.java @@ -34,7 +34,7 @@ public class DataTypeIO { out.write(b); } - public static String readString(DataInputStream in) throws IOException { + public static String readString(DataInputStream in, Charset charset) throws IOException { int length = readVarInt(in); if (length == -1) { @@ -43,7 +43,7 @@ public class DataTypeIO { byte[] b = new byte[length]; in.readFully(b); - return new String(b); + return new String(b, charset); } public static int getStringLength(String string, Charset charset) throws IOException {