mirror of
https://github.com/GravitLauncher/Launcher
synced 2024-12-23 00:51:01 +03:00
[FEATURE] Тестовый SecurityManager для ловли System.exit
This commit is contained in:
parent
fb21aeb888
commit
e002d1a7e9
2 changed files with 30 additions and 0 deletions
|
@ -442,6 +442,7 @@ public static void main(String... args) throws Throwable {
|
|||
EnvHelper.checkDangerousParams();
|
||||
JVMHelper.checkStackTrace(ClientLauncher.class);
|
||||
LogHelper.printVersion("Client Launcher");
|
||||
System.setSecurityManager(new ClientSecurityManager());
|
||||
engine.readKeys();
|
||||
HWIDProvider.registerHWIDs();
|
||||
LauncherGuardManager.initGuard(true);
|
||||
|
|
|
@ -0,0 +1,29 @@
|
|||
package pro.gravit.launcher.client;
|
||||
|
||||
import java.security.Permission;
|
||||
|
||||
public class ClientSecurityManager extends SecurityManager {
|
||||
@Override
|
||||
public void checkPermission(Permission perm)
|
||||
{
|
||||
String permName = perm.getName();
|
||||
if(permName == null) return;
|
||||
if (permName.startsWith("exitVM"))
|
||||
{
|
||||
Class<?>[] classContexts = getClassContext();
|
||||
String callingClass = classContexts.length > 3 ? classContexts[4].getName() : "none";
|
||||
if (!(callingClass.startsWith("pro.gravit.")))
|
||||
{
|
||||
throw new ExitTrappedException();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void checkPermission(Permission perm, Object context) {
|
||||
}
|
||||
|
||||
public static class ExitTrappedException extends SecurityException {
|
||||
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue