Prepare for explicit Lua Sandboxing (API update) 1/4
This commit is contained in:
parent
7e7337aa61
commit
7c10a54334
@ -27,7 +27,7 @@
|
|||||||
|
|
||||||
class LIBLUA_API LuaState {
|
class LIBLUA_API LuaState {
|
||||||
public:
|
public:
|
||||||
LuaState();
|
LuaState (bool sandbox = true, bool rt_safe = false);
|
||||||
LuaState(lua_State *ls);
|
LuaState(lua_State *ls);
|
||||||
~LuaState();
|
~LuaState();
|
||||||
|
|
||||||
@ -36,7 +36,7 @@ public:
|
|||||||
void collect_garbage () const;
|
void collect_garbage () const;
|
||||||
void collect_garbage_step (int debt = 0);
|
void collect_garbage_step (int debt = 0);
|
||||||
void tweak_rt_gc ();
|
void tweak_rt_gc ();
|
||||||
void sandbox (bool rt_safe = false);
|
void sandbox (bool rt_safe);
|
||||||
|
|
||||||
sigc::signal<void,std::string> Print;
|
sigc::signal<void,std::string> Print;
|
||||||
|
|
||||||
|
@ -26,11 +26,16 @@ static int panic (lua_State *L) {
|
|||||||
return 0; /* return to Lua to abort */
|
return 0; /* return to Lua to abort */
|
||||||
}
|
}
|
||||||
|
|
||||||
LuaState::LuaState()
|
LuaState::LuaState(bool enable_sandbox, bool rt_safe)
|
||||||
: L (luaL_newstate ())
|
: L (luaL_newstate ())
|
||||||
{
|
{
|
||||||
assert (L);
|
assert (L);
|
||||||
init ();
|
init ();
|
||||||
|
if (enable_sandbox) {
|
||||||
|
sandbox (rt_safe);
|
||||||
|
} else {
|
||||||
|
do_command ("os.exit = nil os.setlocale = nil");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
LuaState::LuaState(lua_State *ls)
|
LuaState::LuaState(lua_State *ls)
|
||||||
@ -38,6 +43,7 @@ LuaState::LuaState(lua_State *ls)
|
|||||||
{
|
{
|
||||||
assert (L);
|
assert (L);
|
||||||
init ();
|
init ();
|
||||||
|
sandbox (true);
|
||||||
}
|
}
|
||||||
|
|
||||||
LuaState::~LuaState() {
|
LuaState::~LuaState() {
|
||||||
|
Loading…
Reference in New Issue
Block a user