From f9d0daa91cbf5b3f23a6cef8a5e129c75c5b267f Mon Sep 17 00:00:00 2001 From: coehlrich Date: Wed, 27 Jul 2022 09:55:05 +1200 Subject: [PATCH] Fix invalid channel names sent from the server causing the network thread to error. (#8902) --- .../network/MCRegisterPacketHandler.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/main/java/net/minecraftforge/network/MCRegisterPacketHandler.java b/src/main/java/net/minecraftforge/network/MCRegisterPacketHandler.java index 62a9e154be..a90ef0ecea 100644 --- a/src/main/java/net/minecraftforge/network/MCRegisterPacketHandler.java +++ b/src/main/java/net/minecraftforge/network/MCRegisterPacketHandler.java @@ -5,14 +5,17 @@ package net.minecraftforge.network; +import com.mojang.logging.LogUtils; import io.netty.buffer.Unpooled; import io.netty.util.Attribute; +import net.minecraft.ResourceLocationException; import net.minecraft.network.protocol.Packet; import net.minecraft.network.Connection; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.resources.ResourceLocation; import org.apache.commons.lang3.tuple.Pair; +import org.slf4j.Logger; import java.io.ByteArrayOutputStream; import java.io.IOException; @@ -24,6 +27,7 @@ import java.util.function.Supplier; public class MCRegisterPacketHandler { + private static final Logger LOGGER = LogUtils.getLogger(); public static final MCRegisterPacketHandler INSTANCE = new MCRegisterPacketHandler(); public static class ChannelList { @@ -62,7 +66,11 @@ public class MCRegisterPacketHandler for (int cur = 0; cur < all.length; cur++) { if (all[cur] == '\0') { String s = new String(all, last, cur - last, StandardCharsets.UTF_8); - rl.add(new ResourceLocation(s)); + try { + rl.add(new ResourceLocation(s)); + } catch (ResourceLocationException ex) { + LOGGER.warn("Invalid channel name received: {}. Ignoring", s); + } last = cur + 1; } }