diff graal/com.oracle.truffle.api/src/com/oracle/truffle/api/Truffle.java @ 16779:e52ad0d3b7d6

put some security sensitive actions into a privileged action
author Doug Simon <doug.simon@oracle.com>
date Tue, 12 Aug 2014 00:08:19 +0200
parents b7fb36e57da8
children afa70d3e8159
line wrap: on
line diff
--- a/graal/com.oracle.truffle.api/src/com/oracle/truffle/api/Truffle.java	Tue Aug 12 00:01:54 2014 +0200
+++ b/graal/com.oracle.truffle.api/src/com/oracle/truffle/api/Truffle.java	Tue Aug 12 00:08:19 2014 +0200
@@ -24,6 +24,8 @@
  */
 package com.oracle.truffle.api;
 
+import java.security.*;
+
 import com.oracle.truffle.api.impl.*;
 
 /**
@@ -31,7 +33,7 @@
  */
 public class Truffle {
 
-    private static final TruffleRuntime RUNTIME;
+    private static final TruffleRuntime RUNTIME = initRuntime();
 
     /**
      * Creates a new {@link TruffleRuntime} instance if the runtime has a specialized
@@ -46,13 +48,15 @@
         return RUNTIME;
     }
 
-    static {
-        TruffleRuntime runtime;
+    private static TruffleRuntime initRuntime() {
         try {
-            runtime = createRuntime();
+            return AccessController.doPrivileged(new PrivilegedAction<TruffleRuntime>() {
+                public TruffleRuntime run() {
+                    return createRuntime();
+                }
+            });
         } catch (UnsatisfiedLinkError e) {
-            runtime = new DefaultTruffleRuntime();
+            return new DefaultTruffleRuntime();
         }
-        RUNTIME = runtime;
     }
 }