aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorNoah van der Aa <[email protected]>2024-04-25 19:13:12 +0200
committerNoah van der Aa <[email protected]>2024-04-25 19:13:12 +0200
commitf4c76399862f86f3cd88d23bced9192652e3d51f (patch)
treed23a85489ccb301eef04ae7c96fd72d5a02468a3
parentbab31b6f55aea27e45d5f78f72e1f9e9691e4651 (diff)
downloadPaper-f4c76399862f86f3cd88d23bced9192652e3d51f.tar.gz
Paper-f4c76399862f86f3cd88d23bced9192652e3d51f.zip
Un-jankify root user detection
-rw-r--r--patches/server/0648-Add-root-admin-user-detection.patch25
-rw-r--r--patches/server/0781-Detect-headless-JREs.patch4
2 files changed, 6 insertions, 23 deletions
diff --git a/patches/server/0648-Add-root-admin-user-detection.patch b/patches/server/0648-Add-root-admin-user-detection.patch
index 1d520afe11..5b81dcd09a 100644
--- a/patches/server/0648-Add-root-admin-user-detection.patch
+++ b/patches/server/0648-Add-root-admin-user-detection.patch
@@ -12,19 +12,16 @@ Co-authored-by: Noah van der Aa <[email protected]>
diff --git a/src/main/java/io/papermc/paper/util/ServerEnvironment.java b/src/main/java/io/papermc/paper/util/ServerEnvironment.java
new file mode 100644
-index 0000000000000000000000000000000000000000..6bd0afddbcc461149dfe9a5c7a86fff6ea13a5f1
+index 0000000000000000000000000000000000000000..68098dfe716e93aafcca4d8d5b5a81d8648b3654
--- /dev/null
+++ b/src/main/java/io/papermc/paper/util/ServerEnvironment.java
-@@ -0,0 +1,40 @@
+@@ -0,0 +1,23 @@
+package io.papermc.paper.util;
+
+import com.sun.security.auth.module.NTSystem;
+import com.sun.security.auth.module.UnixSystem;
-+import org.apache.commons.lang.SystemUtils;
-+
-+import java.io.IOException;
-+import java.io.InputStream;
+import java.util.Set;
++import org.apache.commons.lang.SystemUtils;
+
+public class ServerEnvironment {
+ private static final boolean RUNNING_AS_ROOT_OR_ADMIN;
@@ -34,21 +31,7 @@ index 0000000000000000000000000000000000000000..6bd0afddbcc461149dfe9a5c7a86fff6
+ if (SystemUtils.IS_OS_WINDOWS) {
+ RUNNING_AS_ROOT_OR_ADMIN = Set.of(new NTSystem().getGroupIDs()).contains(WINDOWS_HIGH_INTEGRITY_LEVEL);
+ } else {
-+ boolean isRunningAsRoot = false;
-+ if (new UnixSystem().getUid() == 0) {
-+ // Due to an OpenJDK bug (https://bugs.openjdk.java.net/browse/JDK-8274721), UnixSystem#getUid incorrectly
-+ // returns 0 when the user doesn't have a username. Because of this, we'll have to double-check if the user ID is
-+ // actually 0 by running the id -u command.
-+ try {
-+ Process process = new ProcessBuilder("id", "-u").start();
-+ process.waitFor();
-+ InputStream inputStream = process.getInputStream();
-+ isRunningAsRoot = new String(inputStream.readAllBytes()).trim().equals("0");
-+ } catch (InterruptedException | IOException ignored) {
-+ isRunningAsRoot = false;
-+ }
-+ }
-+ RUNNING_AS_ROOT_OR_ADMIN = isRunningAsRoot;
++ RUNNING_AS_ROOT_OR_ADMIN = new UnixSystem().getUid() == 0;
+ }
+ }
+
diff --git a/patches/server/0781-Detect-headless-JREs.patch b/patches/server/0781-Detect-headless-JREs.patch
index 4f9486860f..5ba28913a8 100644
--- a/patches/server/0781-Detect-headless-JREs.patch
+++ b/patches/server/0781-Detect-headless-JREs.patch
@@ -8,10 +8,10 @@ This patch detects the missing dependency and stops the server with a clear erro
containing a link to instructions on how to install a non-headless JRE.
diff --git a/src/main/java/io/papermc/paper/util/ServerEnvironment.java b/src/main/java/io/papermc/paper/util/ServerEnvironment.java
-index 6bd0afddbcc461149dfe9a5c7a86fff6ea13a5f1..148d233f4f5278ff39eacdaa0f4f0e7d73be936a 100644
+index 68098dfe716e93aafcca4d8d5b5a81d8648b3654..2b7070e0cefa7cf0777df159693750fea14e800b 100644
--- a/src/main/java/io/papermc/paper/util/ServerEnvironment.java
+++ b/src/main/java/io/papermc/paper/util/ServerEnvironment.java
-@@ -37,4 +37,14 @@ public class ServerEnvironment {
+@@ -20,4 +20,14 @@ public class ServerEnvironment {
public static boolean userIsRootOrAdmin() {
return RUNNING_AS_ROOT_OR_ADMIN;
}