diff options
author | Robin Gareus <robin@gareus.org> | 2017-08-09 04:07:23 +0200 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2017-08-10 02:25:49 +0200 |
commit | 0191a9c4c2749871887e3a2878a36afef90f832b (patch) | |
tree | 8e73f73ce8b2a986f8b5119b557932b28ce0d93f /libs/lua | |
parent | cba622cdcecdba2fd88556c4364646c96f4451c6 (diff) |
Centralize Lua sandboxing
Diffstat (limited to 'libs/lua')
-rw-r--r-- | libs/lua/lua/luastate.h | 1 | ||||
-rw-r--r-- | libs/lua/luastate.cc | 9 |
2 files changed, 10 insertions, 0 deletions
diff --git a/libs/lua/lua/luastate.h b/libs/lua/lua/luastate.h index 5a5c939c2a..cdc7f2b2bf 100644 --- a/libs/lua/lua/luastate.h +++ b/libs/lua/lua/luastate.h @@ -36,6 +36,7 @@ public: void collect_garbage (); void collect_garbage_step (); void tweak_rt_gc (); + void sandbox (bool rt_safe = false); sigc::signal<void,std::string> Print; diff --git a/libs/lua/luastate.cc b/libs/lua/luastate.cc index 8b704fbe6a..80ce41944c 100644 --- a/libs/lua/luastate.cc +++ b/libs/lua/luastate.cc @@ -89,6 +89,15 @@ LuaState::tweak_rt_gc () { } void +LuaState::sandbox (bool rt_safe) { + do_command ("loadfile = nil dofile = nil require = nil dofile = nil package = nil debug = nil os.exit = nil os.setlocale = nil rawget = nil rawset = nil coroutine = nil module = nil"); + if (rt_safe) { + do_command ("os = nil io = nil"); + } +} + + +void LuaState::print (std::string text) { Print (text); /* EMIT SIGNAL */ } |