From 5cf869df1a90ca3ac8316ff2e17127104b6c80d8 Mon Sep 17 00:00:00 2001 From: MrMicky Date: Sat, 9 Oct 2021 09:25:29 +1100 Subject: [PATCH] #3198: Remove terminally deprecated SecurityManager See https://openjdk.java.net/jeps/411 --- .../main/java/net/md_5/bungee/BungeeCord.java | 2 - .../md_5/bungee/BungeeSecurityManager.java | 78 ------------------- 2 files changed, 80 deletions(-) delete mode 100644 proxy/src/main/java/net/md_5/bungee/BungeeSecurityManager.java diff --git a/proxy/src/main/java/net/md_5/bungee/BungeeCord.java b/proxy/src/main/java/net/md_5/bungee/BungeeCord.java index 0e5c25e9..c3bb3afa 100644 --- a/proxy/src/main/java/net/md_5/bungee/BungeeCord.java +++ b/proxy/src/main/java/net/md_5/bungee/BungeeCord.java @@ -189,8 +189,6 @@ public class BungeeCord extends ProxyServer // Java uses ! to indicate a resource inside of a jar/zip/other container. Running Bungee from within a directory that has a ! will cause this to muck up. Preconditions.checkState( new File( "." ).getAbsolutePath().indexOf( '!' ) == -1, "Cannot use BungeeCord in directory with ! in path." ); - System.setSecurityManager( new BungeeSecurityManager() ); - try { baseBundle = ResourceBundle.getBundle( "messages" ); diff --git a/proxy/src/main/java/net/md_5/bungee/BungeeSecurityManager.java b/proxy/src/main/java/net/md_5/bungee/BungeeSecurityManager.java deleted file mode 100644 index 53c81923..00000000 --- a/proxy/src/main/java/net/md_5/bungee/BungeeSecurityManager.java +++ /dev/null @@ -1,78 +0,0 @@ -package net.md_5.bungee; - -import java.io.PrintWriter; -import java.io.StringWriter; -import java.security.AccessControlException; -import java.security.Permission; -import java.util.HashSet; -import java.util.Set; -import java.util.logging.Level; -import net.md_5.bungee.api.ProxyServer; -import net.md_5.bungee.api.scheduler.GroupedThreadFactory; - -public class BungeeSecurityManager extends SecurityManager -{ - - private static final boolean ENFORCE = false; - private final Set seen = new HashSet<>(); - - private void checkRestricted(String text) - { - Class[] context = getClassContext(); - for ( int i = 2; i < context.length; i++ ) - { - ClassLoader loader = context[i].getClassLoader(); - - // Bungee / system can do everything - if ( loader == ClassLoader.getSystemClassLoader() || loader == null ) - { - break; - } - - AccessControlException ex = new AccessControlException( "Plugin violation: " + text ); - if ( ENFORCE ) - { - throw ex; - } - - StringWriter stack = new StringWriter(); - ex.printStackTrace( new PrintWriter( stack ) ); - if ( seen.add( stack.toString() ) ) - { - ProxyServer.getInstance().getLogger().log( Level.WARNING, "Plugin performed restricted action, please inform them to use proper API methods: " + text, ex ); - } - break; - } - } - - @Override - public void checkExit(int status) - { - checkRestricted( "Exit: Cannot close VM" ); - } - - @Override - public void checkAccess(ThreadGroup g) - { - if ( !( g instanceof GroupedThreadFactory.BungeeGroup ) ) - { - checkRestricted( "Illegal thread group access" ); - } - } - - @Override - public void checkPermission(Permission perm, Object context) - { - checkPermission( perm ); - } - - @Override - public void checkPermission(Permission perm) - { - switch ( perm.getName() ) - { - case "setSecurityManager": - throw new AccessControlException( "Restricted Action", perm ); - } - } -}