forked from Mirrorlandia_minetest/mesecons
Luacontroller: Revert function stripping from digiline messages
This commit is contained in:
parent
c2e3d7c4e5
commit
54daee236e
@ -151,24 +151,6 @@ function mesecon.tablecopy(table) -- deep table copy
|
||||
return newtable
|
||||
end
|
||||
|
||||
function mesecon.tablecopy_stripfunctions(table) -- deep table copy, but remove all functions
|
||||
if type(table) == "function" then return nil end -- functions become nil
|
||||
if type(table) ~= "table" then return table end -- no need to copy
|
||||
local newtable = {}
|
||||
|
||||
for idx, item in pairs(table) do
|
||||
if type(idx) ~= "function" then
|
||||
if type(item) == "table" then
|
||||
newtable[idx] = mesecon.tablecopy_stripfunctions(item)
|
||||
elseif type(item) ~= "function" then
|
||||
newtable[idx] = item
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
return newtable
|
||||
end
|
||||
|
||||
function mesecon.cmpAny(t1, t2)
|
||||
if type(t1) ~= type(t2) then return false end
|
||||
if type(t1) ~= "table" and type(t2) ~= "table" then return t1 == t2 end
|
||||
|
@ -278,9 +278,11 @@ local function get_digiline_send(pos)
|
||||
return false
|
||||
end
|
||||
|
||||
-- No sending functions over the wire and make sure serialized version
|
||||
-- of the data is not insanely long to prevent DoS-like attacks
|
||||
msg = mesecon.tablecopy_stripfunctions(msg)
|
||||
-- It is technically possible to send functions over the wire since
|
||||
-- the high performance impact of stripping those from the data has
|
||||
-- been decided to not be worth the added realism.
|
||||
-- Make sure serialized version of the data is not insanely long to
|
||||
-- prevent DoS-like attacks
|
||||
local msg_ser = minetest.serialize(msg)
|
||||
if #msg_ser > mesecon.setting("luacontroller_digiline_maxlen", 50000) then
|
||||
return false
|
||||
|
Loading…
Reference in New Issue
Block a user