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/ardour/luascripting.cc | |
parent | cba622cdcecdba2fd88556c4364646c96f4451c6 (diff) |
Centralize Lua sandboxing
Diffstat (limited to 'libs/ardour/luascripting.cc')
-rw-r--r-- | libs/ardour/luascripting.cc | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/libs/ardour/luascripting.cc b/libs/ardour/luascripting.cc index 8e9157afe8..0367f5830d 100644 --- a/libs/ardour/luascripting.cc +++ b/libs/ardour/luascripting.cc @@ -179,8 +179,7 @@ LuaScripting::scan_script (const std::string &fn, const std::string &sc) lua_State* L = lua.getState(); lua.Print.connect (&LuaScripting::lua_print); - - lua.do_command ("io = nil;"); + lua.sandbox (true); lua.do_command ( "ardourluainfo = {}" @@ -339,7 +338,7 @@ LuaScriptParams::script_params (const std::string& s, const std::string &pname, LuaState lua; lua_State* L = lua.getState(); - lua.do_command ("io = nil;"); + lua.sandbox (true); lua.do_command ("function ardour () end"); try { @@ -416,6 +415,7 @@ LuaScripting::try_compile (const std::string& script, const LuaScriptParamList& } LuaState l; l.Print.connect (&LuaScripting::lua_print); + l.sandbox (true); lua_State* L = l.getState(); l.do_command ("" @@ -425,7 +425,7 @@ LuaScripting::try_compile (const std::string& script, const LuaScriptParamList& " assert(type(f) == 'string', 'Assigned ByteCode must be string')" " local factory = load(f)" " assert(type(factory) == 'function', 'Factory is a not a function')" - " local env = _ENV; env.f = nil env.debug = nil os.exit = nil" + " local env = _ENV; env.f = nil env.os = nil env.io = nil" " load (string.dump(factory, true), nil, nil, env)(a)" " end" ); @@ -454,6 +454,7 @@ LuaScripting::get_factory_bytecode (const std::string& script, const std::string { LuaState l; l.Print.connect (&LuaScripting::lua_print); + l.sandbox (true); lua_State* L = l.getState(); l.do_command ( |