mirror of
https://github.com/PaperMC/Waterfall.git
synced 2024-11-14 14:25:19 +01:00
85c0a35f0b
Upstream has released updates that appears to apply and compile correctly. This update has not been tested by PaperMC and as with ANY update, please do your own testing BungeeCord Changes: 6613aaea Add test fix for library classes being visible to non-dependent plugins 53ce6b93 #3200: Fix protocol for 21w40a d8e29384 #2466: Use switch in "BungeeCord" plugin message handling 5cf869df #3198: Remove terminally deprecated SecurityManager f26f7d88 Add optional 1.18 (21w40a) snapshot protocol support
63 lines
2.7 KiB
Diff
63 lines
2.7 KiB
Diff
From 308ef44c07acd33e80920f2134af7472d0221f4b Mon Sep 17 00:00:00 2001
|
|
From: Techcable <Techcable@techcable.net>
|
|
Date: Fri, 18 Mar 2016 10:53:24 -0700
|
|
Subject: [PATCH] Better Decompression Sanity
|
|
|
|
Fixes #40
|
|
|
|
diff --git a/proxy/src/main/java/net/md_5/bungee/compress/PacketDecompressor.java b/proxy/src/main/java/net/md_5/bungee/compress/PacketDecompressor.java
|
|
index 445ee947..eaedf4bc 100644
|
|
--- a/proxy/src/main/java/net/md_5/bungee/compress/PacketDecompressor.java
|
|
+++ b/proxy/src/main/java/net/md_5/bungee/compress/PacketDecompressor.java
|
|
@@ -1,5 +1,7 @@
|
|
package net.md_5.bungee.compress;
|
|
|
|
+import lombok.*;
|
|
+
|
|
import com.google.common.base.Preconditions;
|
|
import io.netty.buffer.ByteBuf;
|
|
import io.netty.channel.ChannelHandlerContext;
|
|
@@ -8,9 +10,11 @@ import java.util.List;
|
|
import net.md_5.bungee.jni.zlib.BungeeZlib;
|
|
import net.md_5.bungee.protocol.DefinedPacket;
|
|
|
|
+@RequiredArgsConstructor
|
|
public class PacketDecompressor extends MessageToMessageDecoder<ByteBuf>
|
|
{
|
|
|
|
+ private final int compressionThreshold;
|
|
private final BungeeZlib zlib = CompressFactory.zlib.newInstance();
|
|
|
|
@Override
|
|
@@ -34,12 +38,13 @@ public class PacketDecompressor extends MessageToMessageDecoder<ByteBuf>
|
|
out.add( in.retain() );
|
|
} else
|
|
{
|
|
+ Preconditions.checkArgument( size >= compressionThreshold, "Decompressed size %s less than compression threshold %s", size, compressionThreshold);
|
|
ByteBuf decompressed = ctx.alloc().directBuffer();
|
|
|
|
try
|
|
{
|
|
zlib.process( in, decompressed );
|
|
- Preconditions.checkState( decompressed.readableBytes() == size, "Decompressed packet size mismatch" );
|
|
+ Preconditions.checkArgument( decompressed.readableBytes() == size, "Decompressed size %s is not equal to actual decompressed bytes", size, decompressed.readableBytes());
|
|
|
|
out.add( decompressed );
|
|
decompressed = null;
|
|
diff --git a/proxy/src/main/java/net/md_5/bungee/netty/ChannelWrapper.java b/proxy/src/main/java/net/md_5/bungee/netty/ChannelWrapper.java
|
|
index 6be2d942..6dc5633f 100644
|
|
--- a/proxy/src/main/java/net/md_5/bungee/netty/ChannelWrapper.java
|
|
+++ b/proxy/src/main/java/net/md_5/bungee/netty/ChannelWrapper.java
|
|
@@ -138,7 +138,7 @@ public class ChannelWrapper
|
|
|
|
if ( ch.pipeline().get( PacketDecompressor.class ) == null && compressionThreshold != -1 )
|
|
{
|
|
- addBefore( PipelineUtils.PACKET_DECODER, "decompress", new PacketDecompressor() );
|
|
+ addBefore( PipelineUtils.PACKET_DECODER, "decompress", new PacketDecompressor(compressionThreshold) );
|
|
}
|
|
if ( compressionThreshold == -1 )
|
|
{
|
|
--
|
|
2.30.1 (Apple Git-130)
|
|
|