From b4ec2322624e9bb9ab7bd1bfc3967bd1214448af Mon Sep 17 00:00:00 2001 From: Dennis Zhuang Date: Mon, 20 Jul 2026 00:36:39 +0800 Subject: [PATCH] fix: remove io module when enabling sandbox mode Signed-off-by: Dennis Zhuang --- .../aviator/AviatorEvaluatorInstance.java | 28 +++++++++++-------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/googlecode/aviator/AviatorEvaluatorInstance.java b/src/main/java/com/googlecode/aviator/AviatorEvaluatorInstance.java index bbdff43b..19c52548 100644 --- a/src/main/java/com/googlecode/aviator/AviatorEvaluatorInstance.java +++ b/src/main/java/com/googlecode/aviator/AviatorEvaluatorInstance.java @@ -477,6 +477,7 @@ public void enableSandboxMode() { setOption(Options.ALLOWED_CLASS_SET, Collections.emptySet()); setOption(Options.ASSIGNABLE_ALLOWED_CLASS_SET, Collections.emptySet()); setOption(Options.EVAL_TIMEOUT_MS, 1000L); + this.removeModule(this.getModuleName(IoModule.class)); } /** @@ -489,17 +490,7 @@ public void enableSandboxMode() { */ public Env addModule(final Class moduleClazz) throws NoSuchMethodException, IllegalAccessException { - String namespace = moduleClazz.getSimpleName(); - - Import importAnt = moduleClazz.getAnnotation(Import.class); - - if (importAnt != null) { - namespace = importAnt.ns(); - if (namespace == null || namespace.isEmpty() - || !ExpressionParser.isJavaIdentifier(namespace)) { - throw new IllegalArgumentException("Invalid namespace in Import annotation: " + namespace); - } - } + String namespace = getModuleName(moduleClazz); Env exports = null; synchronized (namespace.intern()) { @@ -513,6 +504,21 @@ public Env addModule(final Class moduleClazz) } } + private String getModuleName(final Class moduleClazz) { + String namespace = moduleClazz.getSimpleName(); + + Import importAnt = moduleClazz.getAnnotation(Import.class); + + if (importAnt != null) { + namespace = importAnt.ns(); + if (namespace == null || namespace.isEmpty() + || !ExpressionParser.isJavaIdentifier(namespace)) { + throw new IllegalArgumentException("Invalid namespace in Import annotation: " + namespace); + } + } + return namespace; + } + /** * Remove a module by namespace name. *