2 Commits

Author SHA1 Message Date
1660780960 syntax highlighting in ReadMe options.env 2025-06-19 05:00:51 +00:00
e0710a284d ReadMe error in options.env example 2025-06-19 04:55:52 +00:00
2 changed files with 15 additions and 28 deletions

View File

@@ -140,24 +140,29 @@ If you want to turn off the quota completely, pass `quota=false` instead.
Use the `env` option to inject additional variables to the environment in which the sandboxed code is executed.
local msg = sandbox.run('return foo', {env = {foo = 'This is a global var on the the environment'}})
```lua
local msg = sandbox.run('return foo', {env = {foo = 'This is a global var on the the environment'}})
```
The `env` variable will be used as an "index" by the sandbox environment, but it will *not* be modified at all (changes
to the environment are thus lost). The only way to "get information out" from the sandboxed environments are:
Through side effects, like writing to a database. You will have to provide the side-effects functions in `env`:
local val = 1
local env = { write_db = function(new_val) val = new_val end }
sandbox.run('write_db(2)')
assert(val = 2)
```lua
local val = 1
local env = { write_db = function(new_val) val = new_val end }
sandbox.run('write_db(2)', { env = env })
assert(val = 2)
```
Through returned values:
local env = { amount = 1 }
local result = sandbox.run('return amount + 1', { env = env })
assert(result = 2)
```lua
local env = { amount = 1 }
local result = sandbox.run('return amount + 1', { env = env })
assert(result = 2)
```
Installation
============

View File

@@ -1,5 +1,5 @@
local sandbox = {
_VERSION = "sandbox 0.5.1",
_VERSION = "sandbox 0.5",
_DESCRIPTION = "A pure-lua solution for running untrusted Lua code.",
_URL = "https://github.com/kikito/sandbox.lua",
_LICENSE = [[
@@ -29,24 +29,6 @@ local sandbox = {
}
-- 0.5.1 fixing missing pack and unpack functions for some Lua versions
if not table.pack then
table.pack = function(...)
local t = {...}
t.n = select("#", ...)
return t
end
end
if not table.unpack then
table.unpack = function(tab, start, finish)
local result = {}
for i = start or 1, finish or #tab do
result[#result + 1] = tab[i]
end
return result
end
end
-- quotas don't work in LuaJIT since debug.sethook works differently there
local quota_supported = type(_G.jit) == "nil"
sandbox.quota_supported = quota_supported