Mercurial Hosting > luan
diff core/src/luan/modules/JavaLuan.java @ 229:2a54cb7d1cf4
improve security
git-svn-id: https://luan-java.googlecode.com/svn/trunk@230 21e917c8-12df-6dd8-5cb6-c86387c605b9
author | fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9> |
---|---|
date | Wed, 24 Sep 2014 21:13:46 +0000 |
parents | ec016471c6eb |
children | 9e0d4452e649 |
line wrap: on
line diff
--- a/core/src/luan/modules/JavaLuan.java Wed Sep 24 03:39:34 2014 +0000 +++ b/core/src/luan/modules/JavaLuan.java Wed Sep 24 21:13:46 2014 +0000 @@ -28,9 +28,12 @@ public final class JavaLuan { public static final LuanFunction LOADER = new LuanFunction() { - @Override public Object call(LuanState luan,Object[] args) { + @Override public Object call(LuanState luan,Object[] args) throws LuanException { + if( PackageLuan.is_blocked(luan,"Java") ) + throw luan.exception("Java is blocked"); LuanTable module = Luan.newTable(); try { + module.put( "block", new LuanJavaFunction(JavaLuan.class.getMethod("block",LuanState.class),null) ); module.put( "class", new LuanJavaFunction(JavaLuan.class.getMethod("getClass",LuanState.class,String.class),null) ); add( module, "proxy", LuanState.class, Static.class, LuanTable.class, Object.class ); } catch(NoSuchMethodException e) { @@ -69,6 +72,10 @@ } } + public static void block(LuanState luan) { + PackageLuan.block(luan,"Java"); + } + public static Object __index(LuanState luan,Object obj,Object key) throws LuanException { if( obj instanceof Static ) { if( key instanceof String ) {