From 8ead27c615cb3fcc53cabf3399c65347d4fd6994 Mon Sep 17 00:00:00 2001 From: foss-mc <69294560+foss-mc@users.noreply.github.com> Date: Wed, 16 Dec 2020 18:10:30 +0800 Subject: [PATCH] Packet Checks diff --git a/protocol/src/main/java/net/md_5/bungee/protocol/MinecraftDecoder.java b/protocol/src/main/java/net/md_5/bungee/protocol/MinecraftDecoder.java index 2caadfed..d4729244 100644 --- a/protocol/src/main/java/net/md_5/bungee/protocol/MinecraftDecoder.java +++ b/protocol/src/main/java/net/md_5/bungee/protocol/MinecraftDecoder.java @@ -38,6 +38,19 @@ public class MinecraftDecoder extends MessageToMessageDecoder } Protocol.DirectionData prot = ( server ) ? protocol.TO_SERVER : protocol.TO_CLIENT; + + // FlameCord - Check size before decoding + if (prot == protocol.TO_SERVER) { + final int readableBytes = in.readableBytes(); + final int capacity = in.capacity(); + + if (readableBytes > 2097152) { + throw new FastDecoderException("Error decoding packet with too many readableBytes: " + readableBytes); + } else if (capacity > 2097152) { + throw new FastDecoderException("Error decoding packet with too big capacity: " + capacity); + } + } + ByteBuf slice = in.copy(); // Can't slice this one due to EntityMap :( Object packetTypeInfo = null; diff --git a/proxy/src/main/java/net/md_5/bungee/netty/HandlerBoss.java b/proxy/src/main/java/net/md_5/bungee/netty/HandlerBoss.java index 1351d5d5..d68cc2ce 100644 --- a/proxy/src/main/java/net/md_5/bungee/netty/HandlerBoss.java +++ b/proxy/src/main/java/net/md_5/bungee/netty/HandlerBoss.java @@ -79,6 +79,11 @@ public class HandlerBoss extends ChannelInboundHandlerAdapter @Override public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception { + // FlameCord - Return if channel isn't active + if (!ctx.channel().isActive()) { + return; + } + if ( msg instanceof HAProxyMessage ) { HAProxyMessage proxy = (HAProxyMessage) msg; -- 2.20.1