mirror of
https://github.com/kikito/lua-sandbox.git
synced 2024-12-18 03:04:20 +00:00
passing false as a quota deactivates the hooks
This commit is contained in:
parent
48ae2844e9
commit
bf995029ba
17
sandbox.lua
17
sandbox.lua
@ -120,19 +120,26 @@ function sandbox.protect(f, options)
|
||||
|
||||
options = options or {}
|
||||
|
||||
local quota = options.quota or 500000
|
||||
local quota = false
|
||||
if options.quota ~= false then
|
||||
quota = options.quota or 500000
|
||||
end
|
||||
|
||||
local env = merge(options.env or {}, BASE_ENV)
|
||||
env._G = env._G or env
|
||||
|
||||
setfenv(f, env)
|
||||
|
||||
return function(...)
|
||||
local timeout = function()
|
||||
cleanup()
|
||||
error('Quota exceeded: ' .. tostring(quota))
|
||||
|
||||
if quota then
|
||||
local timeout = function()
|
||||
cleanup()
|
||||
error('Quota exceeded: ' .. tostring(quota))
|
||||
end
|
||||
sethook(timeout, "", quota)
|
||||
end
|
||||
|
||||
sethook(timeout, "", quota)
|
||||
string.rep = nil
|
||||
|
||||
local ok, result = pcall(f, ...)
|
||||
|
@ -83,6 +83,10 @@ describe('sandbox.run', function()
|
||||
assert_error(function() sandbox.run("for i=1,100 do end", {quota = 20}) end)
|
||||
end)
|
||||
|
||||
it('does not use quotes if the quote param is false', function()
|
||||
assert_not_error(function() sandbox.run("for i=1,1000000 do end", {quota = false}) end)
|
||||
end)
|
||||
|
||||
end)
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user