Use thread safe Random inside of ServerLoginPacketListenerImpl
Vanilla uses a Random instance which is not thread safe inside of the constructor for ServerLoginPacketListenerImpl, this is an issue because instances of that class are created on the network worker threads, which means that there is a potential (which we have reports confirming) that multiple users logging on could trip this
This commit is contained in:
parent
7e11afa426
commit
3f0415b453
|
@ -0,0 +1,19 @@
|
||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Shane Freeder <theboyetronic@gmail.com>
|
||||||
|
Date: Thu, 11 Aug 2022 14:37:33 +0100
|
||||||
|
Subject: [PATCH] Use thread safe random in ServerLoginPacketListenerImpl
|
||||||
|
|
||||||
|
|
||||||
|
diff --git a/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java
|
||||||
|
index bf488013e45b9ab97568e587f4dad899498b2f73..88a849a21d6e39fd70f6e7b554528da1a5a7dd57 100644
|
||||||
|
--- a/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java
|
||||||
|
+++ b/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java
|
||||||
|
@@ -52,7 +52,7 @@ public class ServerLoginPacketListenerImpl implements TickablePacketListener, Se
|
||||||
|
private static final AtomicInteger UNIQUE_THREAD_ID = new AtomicInteger(0);
|
||||||
|
static final Logger LOGGER = LogUtils.getLogger();
|
||||||
|
private static final int MAX_TICKS_BEFORE_LOGIN = 600;
|
||||||
|
- private static final RandomSource RANDOM = RandomSource.create();
|
||||||
|
+ private static final RandomSource RANDOM = new org.bukkit.craftbukkit.util.RandomSourceWrapper(new java.util.Random()); // Paper - This is called across threads, make safe
|
||||||
|
private final byte[] nonce;
|
||||||
|
final MinecraftServer server;
|
||||||
|
public final Connection connection;
|
Loading…
Reference in New Issue