8015814: loadWithNewGlobal needs to wrap createGlobal in AccessController.doPrivileged

Mon, 03 Jun 2013 12:57:53 -0300

author
jlaskey
date
Mon, 03 Jun 2013 12:57:53 -0300
changeset 319
0946c8a60f39
parent 318
2df08f4c531d
child 320
78113cda23bf

8015814: loadWithNewGlobal needs to wrap createGlobal in AccessController.doPrivileged
Reviewed-by: sundar
Contributed-by: james.laskey@oracle.com

src/jdk/nashorn/internal/runtime/Context.java file | annotate | diff | comparison | revisions
     1.1 --- a/src/jdk/nashorn/internal/runtime/Context.java	Mon Jun 03 11:16:33 2013 -0300
     1.2 +++ b/src/jdk/nashorn/internal/runtime/Context.java	Mon Jun 03 12:57:53 2013 -0300
     1.3 @@ -500,9 +500,21 @@
     1.4       *
     1.5       * @throws IOException if source cannot be found or loaded
     1.6       */
     1.7 -    public Object loadWithNewGlobal(final Object from) throws IOException {
     1.8 +    public Object loadWithNewGlobal(final Object from) throws IOException, RuntimeException {
     1.9          final ScriptObject oldGlobal = getGlobalTrusted();
    1.10 -        final ScriptObject newGlobal = createGlobal();
    1.11 +        final ScriptObject newGlobal = AccessController.doPrivileged(new PrivilegedAction<ScriptObject>() {
    1.12 +           @Override
    1.13 +           public ScriptObject run() {
    1.14 +               try {
    1.15 +                   return createGlobal();
    1.16 +               } catch (final RuntimeException e) {
    1.17 +                   if (Context.DEBUG) {
    1.18 +                       e.printStackTrace();
    1.19 +                   }
    1.20 +                   throw e;
    1.21 +               }
    1.22 +           }
    1.23 +        });
    1.24          setGlobalTrusted(newGlobal);
    1.25  
    1.26          try {

mercurial