From f6704c5867c6b795323d1f5be2a09522e6ca9df2 Mon Sep 17 00:00:00 2001 From: Horis <821938089@qq.com> Date: Thu, 15 Jun 2023 21:05:55 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/script/rhino/RhinoWrapFactory.kt | 46 ++----------------- 1 file changed, 5 insertions(+), 41 deletions(-) diff --git a/modules/rhino1.7.3/src/main/java/com/script/rhino/RhinoWrapFactory.kt b/modules/rhino1.7.3/src/main/java/com/script/rhino/RhinoWrapFactory.kt index f59f06629..d0317c224 100644 --- a/modules/rhino1.7.3/src/main/java/com/script/rhino/RhinoWrapFactory.kt +++ b/modules/rhino1.7.3/src/main/java/com/script/rhino/RhinoWrapFactory.kt @@ -29,7 +29,6 @@ import org.mozilla.javascript.NativeJavaObject import org.mozilla.javascript.Scriptable import org.mozilla.javascript.WrapFactory import java.lang.reflect.Member -import java.lang.reflect.Modifier /** * This wrap factory is used for security reasons. JSR 223 script @@ -52,50 +51,15 @@ object RhinoWrapFactory : WrapFactory() { javaObject: Any, staticType: Class<*>? ): Scriptable? { - scope?.delete("Packages") - val sm = System.getSecurityManager() val classShutter = RhinoClassShutter - return if (javaObject is ClassLoader) { - sm?.checkPermission(RuntimePermission("getClassLoader")) - super.wrapAsJavaObject(cx, scope, javaObject, staticType) - } else { - var name: String? = null - if (javaObject is Class<*>) { - name = javaObject.name - } else if (javaObject is Member) { - if (sm != null && !Modifier.isPublic(javaObject.modifiers)) { - return null - } - name = javaObject.declaringClass.name - } - if (name != null) { - if (!classShutter.visibleToScripts(name)) null else super.wrapAsJavaObject( - cx, - scope, - javaObject, - staticType - ) - } else { - var dynamicType: Class<*>? = javaObject.javaClass - name = dynamicType!!.name + return when (javaObject) { + is ClassLoader, is Class<*>, is Member, is android.content.Context -> null + else -> { + val name = javaObject.javaClass.name if (classShutter.visibleToScripts(name)) { super.wrapAsJavaObject(cx, scope, javaObject, staticType) } else { - var type: Class<*>? = null - if (staticType != null && staticType.isInterface) { - type = staticType - } else { - while (dynamicType != null) { - dynamicType = dynamicType.superclass - name = dynamicType.name - if (classShutter.visibleToScripts(name)) { - type = dynamicType - break - } - } - assert(type != null) { "java.lang.Object 不可访问" } - } - RhinoJavaObject(scope, javaObject, type) + null } } }