From 457de4428e48d097a975461a3ff08d3dae6ca75c Mon Sep 17 00:00:00 2001 From: "nboyd%atg.com" Date: Mon, 20 Aug 2007 00:30:05 +0000 Subject: [PATCH] Fix bug 392825 - ClassShutter doesn't prevent access through Java reflection APIs git-svn-id: svn://10.0.0.236/trunk@232358 18797224-902f-48f8-a5cc-f745e15eee43 --- .../js/rhino/src/org/mozilla/javascript/JavaMembers.java | 8 +++++++- .../org/mozilla/javascript/resources/Messages.properties | 5 ++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/mozilla/js/rhino/src/org/mozilla/javascript/JavaMembers.java b/mozilla/js/rhino/src/org/mozilla/javascript/JavaMembers.java index 1a6de0f409c..d556d99c196 100644 --- a/mozilla/js/rhino/src/org/mozilla/javascript/JavaMembers.java +++ b/mozilla/js/rhino/src/org/mozilla/javascript/JavaMembers.java @@ -62,9 +62,15 @@ class JavaMembers { this(scope, cl, false); } - + JavaMembers(Scriptable scope, Class cl, boolean includeProtected) { + Context cx = Context.getContext(); + ClassShutter shutter = cx.getClassShutter(); + if (shutter != null && !shutter.visibleToScripts(cl.getName())) { + throw Context.reportRuntimeError1("msg.access.prohibited", + cl.getName()); + } this.members = new Hashtable(23); this.staticMembers = new Hashtable(7); this.cl = cl; diff --git a/mozilla/js/rhino/src/org/mozilla/javascript/resources/Messages.properties b/mozilla/js/rhino/src/org/mozilla/javascript/resources/Messages.properties index 7aea19bedeb..b66bf36e231 100644 --- a/mozilla/js/rhino/src/org/mozilla/javascript/resources/Messages.properties +++ b/mozilla/js/rhino/src/org/mozilla/javascript/resources/Messages.properties @@ -699,6 +699,9 @@ msg.java.array.index.out.of.bounds =\ msg.pkg.int =\ Java package names may not be numbers. +msg.access.prohibited =\ + Access to Java class "{0}" is prohibited. + # ImporterTopLevel msg.ambig.import =\ Ambiguous import: "{0}" and and "{1}". @@ -710,7 +713,7 @@ msg.not.class =\ Function importClass must be called with a class; had "{0}" instead. msg.not.class.not.pkg =\ - "{0}" is neither a class nor a package. + "{0}" is neither a class nor a package. msg.prop.defined =\ Cannot import "{0}" since a property by that name is already defined.