/usr/share/ettercap/lua/third-party/strict.lua is in ettercap-common 1:0.8.2-10build4.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | --- Checks uses of undeclared global variables.
-- All global variables must be 'declared' through a regular
-- assignment (even assigning <code>nil</code> will do) in a top-level
-- chunk before being used anywhere or assigned to inside a function.
-- From Lua distribution (<code>etc/strict.lua</code>).
-- @class module
-- @name strict
local getinfo, error, rawset, rawget = debug.getinfo, error, rawset, rawget
local mt = getmetatable (_G)
if mt == nil then
mt = {}
setmetatable (_G, mt)
end
mt.__declared = {}
local function what ()
local d = getinfo (3, "S")
return d and d.what or "C"
end
mt.__newindex = function (t, n, v)
if not mt.__declared[n] then
local w = what ()
if w ~= "main" and w ~= "C" then
error ("assignment to undeclared variable '" .. n .. "'", 2)
end
mt.__declared[n] = true
end
rawset (t, n, v)
end
mt.__index = function (t, n)
if not mt.__declared[n] and what () ~= "C" then
error ("variable '" .. n .. "' is not declared", 2)
end
return rawget (t, n)
end
|