summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mesecons/util.lua18
-rw-r--r--mesecons_luacontroller/init.lua8
2 files changed, 5 insertions, 21 deletions
diff --git a/mesecons/util.lua b/mesecons/util.lua
index b9b0cef..39f5696 100644
--- a/mesecons/util.lua
+++ b/mesecons/util.lua
@@ -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
diff --git a/mesecons_luacontroller/init.lua b/mesecons_luacontroller/init.lua
index 3c34887..d874fdf 100644
--- a/mesecons_luacontroller/init.lua
+++ b/mesecons_luacontroller/init.lua
@@ -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