9
0
mirror of https://github.com/Winds-Studio/Leaf.git synced 2025-12-23 17:09:29 +00:00

Add back Linear region format

This commit is contained in:
Dreeam
2024-07-20 15:07:42 +08:00
parent ff0edf706c
commit 02125666c1
43 changed files with 105 additions and 75 deletions

View File

@@ -0,0 +1,48 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Dreeam <61569423+Dreeam-qwq@users.noreply.github.com>
Date: Sat, 9 Mar 2024 10:54:59 -0500
Subject: [PATCH] Block log4j rce exploit in chat
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
index d700c5d6faae6d5229e311a9918fd0c2d231c448..abf2605cd11f36584976b576366c92c71b3e00e2 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
@@ -2390,6 +2390,8 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
}
private void tryHandleChat(String s, Runnable runnable, boolean sync) { // CraftBukkit
+ if (ServerGamePacketListenerImpl.isLog4jExploit(s)) return; // Leaf - Block log4j rce exploit in chat
+
if (ServerGamePacketListenerImpl.isChatMessageIllegal(s)) {
this.disconnect((Component) Component.translatable("multiplayer.disconnect.illegal_characters"), org.bukkit.event.player.PlayerKickEvent.Cause.ILLEGAL_CHARACTERS); // Paper
} else if (this.player.isRemoved() || this.player.getChatVisibility() == ChatVisiblity.HIDDEN) { // CraftBukkit - dead men tell no tales
@@ -2421,6 +2423,15 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
}
}
+ // Leaf start - Block log4j rce exploit in chat
+ public static boolean isLog4jExploit(String message) {
+ java.util.regex.Pattern pattern = java.util.regex.Pattern.compile(".*\\$\\{[^}]*}.*");
+ java.util.regex.Matcher matcher = pattern.matcher(message);
+
+ return matcher.find();
+ }
+ // Leaf end
+
public static boolean isChatMessageIllegal(String message) {
for (int i = 0; i < message.length(); ++i) {
if (!StringUtil.isAllowedChatCharacter(message.charAt(i))) {
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index 675b86360802a19eea84a72aec48392a95fbdb25..7c66e3fea981cc6d3a1407c4cb0900a1a697e567 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -753,6 +753,8 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
if (this.getHandle().connection == null) return;
+ if (ServerGamePacketListenerImpl.isLog4jExploit(msg)) return; // Leaf - Block log4j rce exploit in chat
+
// Paper start - Improve chat handling
if (ServerGamePacketListenerImpl.isChatMessageIllegal(msg)) {
this.getHandle().connection.disconnect(Component.translatable("multiplayer.disconnect.illegal_characters"), org.bukkit.event.player.PlayerKickEvent.Cause.ILLEGAL_CHARACTERS); // Paper - kick event causes