mirror of
https://github.com/kikito/lua-sandbox.git
synced 2024-12-18 03:04:20 +00:00
feat(sandbox) add load mode to string functions
This commit is contained in:
parent
ddbc7e12cc
commit
8974b8869c
@ -138,8 +138,6 @@ end
|
||||
|
||||
-- Public interface: sandbox.protect
|
||||
function sandbox.protect(f, options)
|
||||
if type(f) == 'string' then f = assert(loadstring(f)) end
|
||||
|
||||
options = options or {}
|
||||
|
||||
local quota = false
|
||||
@ -150,7 +148,11 @@ function sandbox.protect(f, options)
|
||||
local env = merge(options.env or {}, BASE_ENV)
|
||||
env._G = env._G or env
|
||||
|
||||
if type(f) == 'string' then
|
||||
f = assert(load(f, nil, options.mode, env))
|
||||
else
|
||||
setfenv(f, env)
|
||||
end
|
||||
|
||||
return function(...)
|
||||
|
||||
|
@ -13,6 +13,16 @@ describe('sandbox.run', function()
|
||||
assert.equal(r, 'hello')
|
||||
end)
|
||||
|
||||
it('can run bytecode strings by default', function()
|
||||
local fn = function() end
|
||||
assert.has_no.error(function() sandbox.run(string.dump(fn)) end)
|
||||
end)
|
||||
|
||||
it('can\'t run bytecode strings if given a \'t\' mode option', function()
|
||||
local fn = function() end
|
||||
assert.error(function() sandbox.run(string.dump(fn), { mode = 't' }) end)
|
||||
end)
|
||||
|
||||
it('has access to safe methods', function()
|
||||
assert.equal(10, sandbox.run("return tonumber('10')"))
|
||||
assert.equal('HELLO', sandbox.run("return string.upper('hello')"))
|
||||
|
Loading…
Reference in New Issue
Block a user