Fix reading the brand message from clients

Also try to catch the exception caused by clients/plugins seemingly
mangling this information
This commit is contained in:
Shane Freeder 2020-08-27 17:11:13 +01:00
parent 243d2313b9
commit 0893de14dc
No known key found for this signature in database
GPG Key ID: A3F61EA5A085289C
1 changed files with 8 additions and 4 deletions

View File

@ -5,7 +5,7 @@ Subject: [PATCH] Brand support
diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java
index bc613281d18efac7bb926d84ec54653368b93f43..1519813d35541199e860234dc3fb121a35604c0f 100644
index bc613281d18efac7bb926d84ec54653368b93f43..a5f5a985ba5333f9df6ad56fbd7d843807ea946d 100644
--- a/src/main/java/net/minecraft/server/PlayerConnection.java
+++ b/src/main/java/net/minecraft/server/PlayerConnection.java
@@ -4,6 +4,7 @@ import com.google.common.primitives.Doubles;
@ -34,20 +34,24 @@ index bc613281d18efac7bb926d84ec54653368b93f43..1519813d35541199e860234dc3fb121a
@Override
public void a(PacketPlayInCustomPayload packetplayincustompayload) {
PlayerConnectionUtils.ensureMainThread(packetplayincustompayload, this, this.player.getWorldServer());
@@ -2759,6 +2764,12 @@ public class PlayerConnection implements PacketListenerPlayIn {
@@ -2759,6 +2764,16 @@ public class PlayerConnection implements PacketListenerPlayIn {
try {
byte[] data = new byte[packetplayincustompayload.data.readableBytes()];
packetplayincustompayload.data.readBytes(data);
+
+ // Paper start - Brand support
+ if (packetplayincustompayload.tag.equals(MINECRAFT_BRAND)) {
+ this.clientBrandName = data.length < 512 ? new String(data) : "unknown-too-large";
+ try {
+ this.clientBrandName = new PacketDataSerializer(Unpooled.copiedBuffer(data)).readUTF(256);
+ } catch (StringIndexOutOfBoundsException ex) {
+ this.clientBrandName = "illegal";
+ }
+ }
+ // Paper end
server.getMessenger().dispatchIncomingMessage(player.getBukkitEntity(), packetplayincustompayload.tag.toString(), data);
} catch (Exception ex) {
PlayerConnection.LOGGER.error("Couldn\'t dispatch custom payload", ex);
@@ -2768,6 +2779,12 @@ public class PlayerConnection implements PacketListenerPlayIn {
@@ -2768,6 +2783,12 @@ public class PlayerConnection implements PacketListenerPlayIn {
}