Unsandbox Lua scripts (#26365)
Per a conversation with @nathansobo, have the Lua scripts run unsandboxed for now (while this feature is behind the staff feature flag). Release Notes: - N/A
This commit is contained in:
parent
5f159bc95e
commit
6da099a9d7
2 changed files with 19 additions and 2 deletions
|
@ -3,6 +3,16 @@
|
||||||
-- Create a sandbox environment
|
-- Create a sandbox environment
|
||||||
local sandbox = {}
|
local sandbox = {}
|
||||||
|
|
||||||
|
-- For now, add all globals to `sandbox` (so there effectively is no sandbox).
|
||||||
|
-- We still need the logic below so that we can do things like overriding print() to write
|
||||||
|
-- to our in-memory log rather than to stdout, we will delete this loop (and re-enable
|
||||||
|
-- the I/O module being sandboxed below) to have things be sandboxed again.
|
||||||
|
for k, v in pairs(_G) do
|
||||||
|
if sandbox[k] == nil then
|
||||||
|
sandbox[k] = v
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
-- Allow access to standard libraries (safe subset)
|
-- Allow access to standard libraries (safe subset)
|
||||||
sandbox.string = string
|
sandbox.string = string
|
||||||
sandbox.table = table
|
sandbox.table = table
|
||||||
|
@ -25,8 +35,7 @@ local io = {}
|
||||||
io.open = sb_io_open
|
io.open = sb_io_open
|
||||||
|
|
||||||
-- Add the sandboxed io library to the sandbox environment
|
-- Add the sandboxed io library to the sandbox environment
|
||||||
sandbox.io = io
|
-- sandbox.io = io -- Uncomment this line to re-enable sandboxed file I/O.
|
||||||
|
|
||||||
|
|
||||||
-- Load the script with the sandbox environment
|
-- Load the script with the sandbox environment
|
||||||
local user_script_fn, err = load(user_script, nil, "t", sandbox)
|
local user_script_fn, err = load(user_script, nil, "t", sandbox)
|
||||||
|
|
|
@ -119,6 +119,14 @@ impl ScriptSession {
|
||||||
let lua = Lua::new();
|
let lua = Lua::new();
|
||||||
lua.set_memory_limit(2 * 1024 * 1024 * 1024)?; // 2 GB
|
lua.set_memory_limit(2 * 1024 * 1024 * 1024)?; // 2 GB
|
||||||
let globals = lua.globals();
|
let globals = lua.globals();
|
||||||
|
|
||||||
|
// Use the project root dir as the script's current working dir.
|
||||||
|
if let Some(root_dir) = &root_dir {
|
||||||
|
if let Some(root_dir) = root_dir.to_str() {
|
||||||
|
globals.set("cwd", root_dir)?;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
globals.set(
|
globals.set(
|
||||||
"sb_print",
|
"sb_print",
|
||||||
lua.create_function({
|
lua.create_function({
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue