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.Compilable;
import javax.script.CompiledScript;
import javax.script.ScriptContext;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.SimpleBindings;
@@ -191,12 +192,22 @@ public class JavaxScriptRunner extends ScriptRunnerBase {
}
ScriptEngine result =
new ScriptEngineManager().getEngineByName(getLanguage());
maybeApplyGraalJsProperties(result);
if (result != null && getKeepEngine()) {
this.keptEngine = 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
* most deeply nested into it - if any.


Loading…
Cancel
Save