prosody: Make getfenv() replacement for require() sandboxing local to avoid polluting...
authorKim Alvefur <zash@zash.se>
Mon, 13 Oct 2014 19:02:04 +0000 (21:02 +0200)
committerKim Alvefur <zash@zash.se>
Mon, 13 Oct 2014 19:02:04 +0000 (21:02 +0200)
prosody

diff --git a/prosody b/prosody
index aab803c5b8c71c16ce616a7b0ccb09ef617f4318..e8f81d5d6ec6a8144237cd37635a7f142c303ba7 100755 (executable)
--- a/prosody
+++ b/prosody
@@ -151,13 +151,11 @@ function sandbox_require()
        -- for neat sandboxing of modules
        local _realG = _G;
        local _real_require = require;
-       if not getfenv then
+       local getfenv = getfenv or function (f)
                -- FIXME: This is a hack to replace getfenv() in Lua 5.2
-               function getfenv(f)
-                       local name, env = debug.getupvalue(debug.getinfo(f or 1).func, 1);
-                       if name == "_ENV" then
-                               return env;
-                       end
+               local name, env = debug.getupvalue(debug.getinfo(f or 1).func, 1);
+               if name == "_ENV" then
+                       return env;
                end
        end
        function require(...)