Mercurial Hosting > luan
comparison src/luan/impl/LuanCompiler.java @ 1133:ba4daf107e07
fix security bug
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Wed, 17 Jan 2018 20:59:42 -0700 |
parents | 1a68fc55a80c |
children | f41919741100 |
comparison
equal
deleted
inserted
replaced
1132:b70102bab110 | 1133:ba4daf107e07 |
---|---|
6 import java.util.HashMap; | 6 import java.util.HashMap; |
7 import luan.LuanFunction; | 7 import luan.LuanFunction; |
8 import luan.LuanState; | 8 import luan.LuanState; |
9 import luan.LuanException; | 9 import luan.LuanException; |
10 import luan.LuanTable; | 10 import luan.LuanTable; |
11 import luan.LuanJava; | 11 import luan.LuanJavaOk; |
12 import luan.modules.JavaLuan; | 12 import luan.modules.JavaLuan; |
13 import luan.modules.PackageLuan; | 13 import luan.modules.PackageLuan; |
14 | 14 |
15 | 15 |
16 public final class LuanCompiler { | 16 public final class LuanCompiler { |
17 private static final Map<String,WeakReference<Class>> map = new HashMap<String,WeakReference<Class>>(); | 17 private static final Map<String,WeakReference<Class>> map = new HashMap<String,WeakReference<Class>>(); |
18 | 18 |
19 public static LuanFunction compile(String sourceText,String sourceName,LuanTable env) throws LuanException { | 19 public static LuanFunction compile(String sourceText,String sourceName,LuanTable env) throws LuanException { |
20 Class fnClass = env==null ? getClass(sourceText,sourceName) : getClass(sourceText,sourceName,env); | 20 Class fnClass = env==null ? getClass(sourceText,sourceName) : getClass(sourceText,sourceName,env); |
21 LuanJava java; | 21 LuanJavaOk javaOk; |
22 if( env == null ) { | 22 if( env == null ) { |
23 java = new LuanJava(); | 23 javaOk = new LuanJavaOk(); |
24 } else { | 24 } else { |
25 java = env.java; | 25 javaOk = env.javaOk; |
26 if( java == null ) { | 26 if( javaOk == null ) { |
27 java = new LuanJava(); | 27 javaOk = new LuanJavaOk(); |
28 env.java = java; | 28 env.javaOk = javaOk; |
29 } | 29 } |
30 } | 30 } |
31 Closure closure; | 31 Closure closure; |
32 try { | 32 try { |
33 closure = (Closure)fnClass.getConstructor(LuanJava.class).newInstance(java); | 33 closure = (Closure)fnClass.getConstructor(LuanJavaOk.class).newInstance(javaOk); |
34 } catch(NoSuchMethodException e) { | 34 } catch(NoSuchMethodException e) { |
35 throw new RuntimeException(e); | 35 throw new RuntimeException(e); |
36 } catch(InstantiationException e) { | 36 } catch(InstantiationException e) { |
37 throw new RuntimeException(e); | 37 throw new RuntimeException(e); |
38 } catch(IllegalAccessException e) { | 38 } catch(IllegalAccessException e) { |