Browse Source

relax some Graal.js Security rules for <script*>

master
Stefan Bodewig 5 years ago
parent
commit
be9b424d12
1 changed files with 11 additions and 0 deletions
  1. +11
    -0
      src/main/org/apache/tools/ant/util/optional/JavaxScriptRunner.java

+ 11
- 0
src/main/org/apache/tools/ant/util/optional/JavaxScriptRunner.java View File

@@ -26,6 +26,7 @@ import java.util.stream.Collectors;
import javax.script.Bindings; import javax.script.Bindings;
import javax.script.Compilable; import javax.script.Compilable;
import javax.script.CompiledScript; import javax.script.CompiledScript;
import javax.script.ScriptContext;
import javax.script.ScriptEngine; import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager; import javax.script.ScriptEngineManager;
import javax.script.SimpleBindings; import javax.script.SimpleBindings;
@@ -191,12 +192,22 @@ public class JavaxScriptRunner extends ScriptRunnerBase {
} }
ScriptEngine result = ScriptEngine result =
new ScriptEngineManager().getEngineByName(getLanguage()); new ScriptEngineManager().getEngineByName(getLanguage());
maybeApplyGraalJsProperties(result);
if (result != null && getKeepEngine()) { if (result != null && getKeepEngine()) {
this.keptEngine = result; this.keptEngine = result;
} }
return result; return result;
} }


private static final String DROP_GRAAL_SECURITY_RESTRICTIONS = "polyglot.js.allowAllAccess";

private void maybeApplyGraalJsProperties(final ScriptEngine engine) {
if (engine != null && engine.getClass().getName().contains("Graal")) {
engine.getBindings(ScriptContext.ENGINE_SCOPE)
.put(DROP_GRAAL_SECURITY_RESTRICTIONS, true);
}
}

/** /**
* Traverse a Throwable's cause(s) and return the BuildException * Traverse a Throwable's cause(s) and return the BuildException
* most deeply nested into it - if any. * most deeply nested into it - if any.


Loading…
Cancel
Save