From 7fff39983485804142d39ccae35985a412237f8c Mon Sep 17 00:00:00 2001 From: Simon Willnauer Date: Thu, 10 Sep 2015 10:31:58 +0200 Subject: [PATCH] Reenable XTestSecurityManager --- core/pom.xml | 2 +- .../bootstrap/BootstrapForTesting.java | 2 +- .../bootstrap/XTestSecurityManager.java | 23 ++++++++----------- 3 files changed, 12 insertions(+), 15 deletions(-) diff --git a/core/pom.xml b/core/pom.xml index 99e01d92531..e367d333afd 100644 --- a/core/pom.xml +++ b/core/pom.xml @@ -279,7 +279,7 @@ rest-api-spec/**/* org/elasticsearch/test/**/* org/elasticsearch/bootstrap/BootstrapForTesting.class - org/elasticsearch/bootstrap/XTestSecurityManager.class + org/elasticsearch/bootstrap/XTestSecurityManager*.class org/elasticsearch/common/cli/CliToolTestCase.class org/elasticsearch/common/cli/CliToolTestCase$*.class org/elasticsearch/cluster/MockInternalClusterInfoService.class diff --git a/core/src/test/java/org/elasticsearch/bootstrap/BootstrapForTesting.java b/core/src/test/java/org/elasticsearch/bootstrap/BootstrapForTesting.java index 58f4406ae7e..a779db2326b 100644 --- a/core/src/test/java/org/elasticsearch/bootstrap/BootstrapForTesting.java +++ b/core/src/test/java/org/elasticsearch/bootstrap/BootstrapForTesting.java @@ -114,7 +114,7 @@ public class BootstrapForTesting { perms.add(new FilePermission(coverageDir.resolve("jacoco-it.exec").toString(), "read,write")); } Policy.setPolicy(new ESPolicy(perms)); - System.setSecurityManager(new TestSecurityManager()); + System.setSecurityManager(new XTestSecurityManager()); Security.selfTest(); } catch (Exception e) { throw new RuntimeException("unable to install test security manager", e); diff --git a/core/src/test/java/org/elasticsearch/bootstrap/XTestSecurityManager.java b/core/src/test/java/org/elasticsearch/bootstrap/XTestSecurityManager.java index 0f68fb75461..c626274b9e9 100644 --- a/core/src/test/java/org/elasticsearch/bootstrap/XTestSecurityManager.java +++ b/core/src/test/java/org/elasticsearch/bootstrap/XTestSecurityManager.java @@ -72,26 +72,24 @@ public final class XTestSecurityManager extends SecurityManager { */ @Override public void checkExit(final int status) { - AccessController.doPrivileged(new PrivilegedAction() { - @Override - public Void run() { + AccessController.doPrivileged((PrivilegedAction) () -> { final String systemClassName = System.class.getName(), - runtimeClassName = Runtime.class.getName(); + runtimeClassName = Runtime.class.getName(); String exitMethodHit = null; for (final StackTraceElement se : Thread.currentThread().getStackTrace()) { final String className = se.getClassName(), methodName = se.getMethodName(); if ( - ("exit".equals(methodName) || "halt".equals(methodName)) && - (systemClassName.equals(className) || runtimeClassName.equals(className)) - ) { + ("exit".equals(methodName) || "halt".equals(methodName)) && + (systemClassName.equals(className) || runtimeClassName.equals(className)) + ) { exitMethodHit = className + '#' + methodName + '(' + status + ')'; continue; } - + if (exitMethodHit != null) { - if (className.startsWith(JUNIT4_TEST_RUNNER_PACKAGE) || - className.startsWith(ECLIPSE_TEST_RUNNER_PACKAGE) || - className.startsWith(IDEA_TEST_RUNNER_PACKAGE)) { + if (className.startsWith(JUNIT4_TEST_RUNNER_PACKAGE) || + className.startsWith(ECLIPSE_TEST_RUNNER_PACKAGE) || + className.startsWith(IDEA_TEST_RUNNER_PACKAGE)) { // this exit point is allowed, we return normally from closure: return /*void*/ null; } else { @@ -100,13 +98,12 @@ public final class XTestSecurityManager extends SecurityManager { } } } - + if (exitMethodHit == null) { // should never happen, only if JVM hides stack trace - replace by generic: exitMethodHit = "JVM exit method"; } throw new SecurityException(exitMethodHit + " calls are not allowed because they terminate the test runner's JVM."); - } }); // we passed the stack check, delegate to super, so default policy can still deny permission: