From 01d0fe59935c8465a92a2508049f58292545a99f Mon Sep 17 00:00:00 2001 From: Jokler Date: Sun, 6 May 2018 23:23:56 +0200 Subject: Factoids: Add memory usage check to lua --- src/plugins/factoids/sandbox.lua | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/plugins/factoids/sandbox.lua b/src/plugins/factoids/sandbox.lua index 59e6d9e..2da45e7 100644 --- a/src/plugins/factoids/sandbox.lua +++ b/src/plugins/factoids/sandbox.lua @@ -90,7 +90,7 @@ sandbox_env.eval = eval sandbox_env.sleep = safesleep -- Check if the factoid timed out -function checktime(event, line) +function checktime() if os.time() - time >= timeout then error("Timed out after " .. timeout .. " seconds", 0) else @@ -99,12 +99,24 @@ function checktime(event, line) end end +-- Check if the factoid uses too much memory +function checkmem() + if collectgarbage("count") > maxmem then + error("Factoid used over " .. maxmem .. " kbyte of ram") + end +end + local f, e = load(factoid, nil, nil, sandbox_env) -- Add timeout hook time = os.time() +-- The timeout is defined in seconds timeout = 30 debug.sethook(checktime, "l") +-- Add memory check hook +-- The max memory is defined in kilobytes +maxmem = 1000 +debug.sethook(checkmem, "l") if f then f() -- cgit v1.2.3-70-g09d2