mirror of
https://github.com/PaperMC/Waterfall.git
synced 2024-12-01 06:33:39 +01:00
2187ad029c
When we changed the disconnect check to use proper concurrent behavior (using CAS), the disconnecting flag wasn't set the first time we disconnect because the OR short-circited the CAS. Upstream doesn't have this issue because they don't set the flag in the if statement (with CAS), and therefore aren't short circuted. I have no idea why this check was an OR statement in the first place, so maybe this will cause more crazy bugs.
58 lines
2.0 KiB
Diff
58 lines
2.0 KiB
Diff
From 082cb79ea1bf91ec488e39b30e7178d7db515f71 Mon Sep 17 00:00:00 2001
|
|
From: Tux <write@imaginarycode.com>
|
|
Date: Wed, 13 Apr 2016 14:00:40 -0400
|
|
Subject: [PATCH] Validate that chat messages are non-blank
|
|
|
|
|
|
diff --git a/proxy/src/main/java/io/github/waterfallmc/waterfall/StringUtil.java b/proxy/src/main/java/io/github/waterfallmc/waterfall/StringUtil.java
|
|
new file mode 100644
|
|
index 0000000..940ad80
|
|
--- /dev/null
|
|
+++ b/proxy/src/main/java/io/github/waterfallmc/waterfall/StringUtil.java
|
|
@@ -0,0 +1,22 @@
|
|
+package io.github.waterfallmc.waterfall;
|
|
+
|
|
+import lombok.AccessLevel;
|
|
+import lombok.NoArgsConstructor;
|
|
+
|
|
+@NoArgsConstructor(access = AccessLevel.PRIVATE)
|
|
+public class StringUtil {
|
|
+ public static boolean isBlank(String str) {
|
|
+ if (str.isEmpty()) {
|
|
+ return true;
|
|
+ }
|
|
+
|
|
+ int l = str.length();
|
|
+ for (int i = 0; i < l; i++) {
|
|
+ if (!Character.isWhitespace(str.charAt(i))) {
|
|
+ return false;
|
|
+ }
|
|
+ }
|
|
+
|
|
+ return true;
|
|
+ }
|
|
+}
|
|
diff --git a/proxy/src/main/java/net/md_5/bungee/connection/UpstreamBridge.java b/proxy/src/main/java/net/md_5/bungee/connection/UpstreamBridge.java
|
|
index 7565ff9..42bb2fb 100644
|
|
--- a/proxy/src/main/java/net/md_5/bungee/connection/UpstreamBridge.java
|
|
+++ b/proxy/src/main/java/net/md_5/bungee/connection/UpstreamBridge.java
|
|
@@ -1,6 +1,7 @@
|
|
package net.md_5.bungee.connection;
|
|
|
|
import com.google.common.base.Preconditions;
|
|
+import io.github.waterfallmc.waterfall.StringUtil;
|
|
import net.md_5.bungee.BungeeCord;
|
|
import net.md_5.bungee.ServerConnection;
|
|
import net.md_5.bungee.UserConnection;
|
|
@@ -109,6 +110,7 @@ public class UpstreamBridge extends PacketHandler
|
|
public void handle(Chat chat) throws Exception
|
|
{
|
|
Preconditions.checkArgument( chat.getMessage().length() <= 100, "Chat message too long" ); // Mojang limit, check on updates
|
|
+ Preconditions.checkArgument(!StringUtil.isBlank(chat.getMessage()), "Chat message is empty");
|
|
|
|
ServerConnection server = con.getServer();
|
|
|
|
--
|
|
2.8.3
|
|
|