mirror of
https://github.com/PaperMC/Waterfall.git
synced 2024-11-16 07:15:14 +01:00
a2d39aed4d
Upstream updated to Netty 4.1.53.Final Update maven-shade-plugin.log4j2-cachefile-transformer to 2.13.2 for compatibility with maven-shade-plugin 3.2.3
77 lines
2.9 KiB
Diff
77 lines
2.9 KiB
Diff
From 07d364ecda023268acd62962e90d9002359437d7 Mon Sep 17 00:00:00 2001
|
|
From: kashike <kashike@vq.lc>
|
|
Date: Wed, 20 Mar 2019 21:39:12 -0700
|
|
Subject: [PATCH] Use proper max length for serverbound chat packet
|
|
|
|
|
|
diff --git a/protocol/src/main/java/net/md_5/bungee/protocol/DefinedPacket.java b/protocol/src/main/java/net/md_5/bungee/protocol/DefinedPacket.java
|
|
index f4470588..4b006833 100644
|
|
--- a/protocol/src/main/java/net/md_5/bungee/protocol/DefinedPacket.java
|
|
+++ b/protocol/src/main/java/net/md_5/bungee/protocol/DefinedPacket.java
|
|
@@ -45,6 +45,34 @@ public abstract class DefinedPacket
|
|
return new String( b, Charsets.UTF_8 );
|
|
}
|
|
|
|
+ // Waterfall start
|
|
+ public static void writeString(String s, final int maxLength, ByteBuf buf)
|
|
+ {
|
|
+ if ( s.length() > maxLength )
|
|
+ {
|
|
+ throw new OverflowPacketException( String.format( "Cannot send string longer than %s (got %s characters)", maxLength, s.length() ) );
|
|
+ }
|
|
+
|
|
+ byte[] b = s.getBytes( Charsets.UTF_8 );
|
|
+ writeVarInt( b.length, buf );
|
|
+ buf.writeBytes( b );
|
|
+ }
|
|
+
|
|
+ public static String readString(ByteBuf buf, final int maxLength)
|
|
+ {
|
|
+ int len = readVarInt( buf );
|
|
+ if ( len > maxLength )
|
|
+ {
|
|
+ throw new OverflowPacketException( String.format( "Cannot receive string longer than %s (got %s characters)", maxLength, len ) );
|
|
+ }
|
|
+
|
|
+ byte[] b = new byte[ len ];
|
|
+ buf.readBytes( b );
|
|
+
|
|
+ return new String( b, Charsets.UTF_8 );
|
|
+ }
|
|
+ // Waterfall end
|
|
+
|
|
public static void writeArray(byte[] b, ByteBuf buf)
|
|
{
|
|
if ( b.length > Short.MAX_VALUE )
|
|
diff --git a/protocol/src/main/java/net/md_5/bungee/protocol/packet/Chat.java b/protocol/src/main/java/net/md_5/bungee/protocol/packet/Chat.java
|
|
index 7a0a1ce7..828a5dbe 100644
|
|
--- a/protocol/src/main/java/net/md_5/bungee/protocol/packet/Chat.java
|
|
+++ b/protocol/src/main/java/net/md_5/bungee/protocol/packet/Chat.java
|
|
@@ -40,6 +40,11 @@ public class Chat extends DefinedPacket
|
|
@Override
|
|
public void read(ByteBuf buf, ProtocolConstants.Direction direction, int protocolVersion)
|
|
{
|
|
+ // Waterfall start
|
|
+ if (direction == ProtocolConstants.Direction.TO_CLIENT) {
|
|
+ this.message = readString(buf, Short.MAX_VALUE * 8 + 8);
|
|
+ } else
|
|
+ // Waterfall end
|
|
message = readString( buf );
|
|
if ( direction == ProtocolConstants.Direction.TO_CLIENT )
|
|
{
|
|
@@ -54,6 +59,11 @@ public class Chat extends DefinedPacket
|
|
@Override
|
|
public void write(ByteBuf buf, ProtocolConstants.Direction direction, int protocolVersion)
|
|
{
|
|
+ // Waterfall start
|
|
+ if (direction == ProtocolConstants.Direction.TO_CLIENT) {
|
|
+ writeString(this.message, Short.MAX_VALUE * 8 + 8, buf);
|
|
+ } else
|
|
+ // Waterfall end
|
|
writeString( message, buf );
|
|
if ( direction == ProtocolConstants.Direction.TO_CLIENT )
|
|
{
|
|
--
|
|
2.29.0.windows.1
|
|
|