mirror of
				https://github.com/minetest-mods/mesecons.git
				synced 2025-10-31 19:35:23 +01:00 
			
		
		
		
	Merge b6fde13bb0 into 54de66b3e1
				
					
				
			This commit is contained in:
		| @@ -232,12 +232,25 @@ end | ||||
| local function safe_string_find(...) | ||||
| 	if (select(4, ...)) ~= true then | ||||
| 		debug.sethook() -- Clear hook | ||||
| 		error("string.find: 'plain' (fourth parameter) must always be true in a Luacontroller") | ||||
| 		error("string.find: 'plain' (fourth parameter) must always be true in a Luacontroller", 2) | ||||
| 	end | ||||
|  | ||||
| 	return string.find(...) | ||||
| end | ||||
|  | ||||
| -- pcall can capture certain errors after the debug hook is removed. | ||||
| -- Detect these errors, and propagate them. | ||||
| local function safe_pcall(f, ...) | ||||
| 	local values = {pcall(f, ...)} | ||||
| 	local ok, err = values[1], values[2] | ||||
| 	 | ||||
| 	if not debug.gethook() then | ||||
| 		error(string.gsub(err, "%(load%)%:.+:%s", ""), 2) | ||||
| 	end | ||||
| 	 | ||||
| 	return unpack(values) | ||||
| end | ||||
|  | ||||
| local function remove_functions(x) | ||||
| 	local tp = type(x) | ||||
| 	if tp == "function" then | ||||
| @@ -469,7 +482,7 @@ end | ||||
| local safe_globals = { | ||||
| 	-- Don't add pcall/xpcall unless willing to deal with the consequences (unless very careful, incredibly likely to allow killing server indirectly) | ||||
| 	"assert", "error", "ipairs", "next", "pairs", "select", | ||||
| 	"tonumber", "tostring", "type", "unpack", "_VERSION" | ||||
| 	"tonumber", "tostring", "type", "unpack", "_VERSION", "error" | ||||
| } | ||||
|  | ||||
| local function create_environment(pos, mem, event, itbl, send_warning) | ||||
| @@ -496,6 +509,7 @@ local function create_environment(pos, mem, event, itbl, send_warning) | ||||
| 		print = safe_print, | ||||
| 		interrupt = get_interrupt(pos, itbl, send_warning), | ||||
| 		digiline_send = get_digiline_send(pos, itbl, send_warning), | ||||
| 		pcall = safe_pcall, | ||||
| 		string = { | ||||
| 			byte = string.byte, | ||||
| 			char = string.char, | ||||
|   | ||||
		Reference in New Issue
	
	Block a user