diff options
author | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2017-07-16 16:33:28 +0100 |
---|---|---|
committer | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2017-07-16 16:33:28 +0100 |
commit | 8d080cdc349ee281701ae185d2053314611875da (patch) | |
tree | e9725e3153e9f42574d06601b200d107ba80be1b | |
parent | 19f4379a27a083aea45965e05c75012409060195 (diff) | |
download | rspamd-8d080cdc349ee281701ae185d2053314611875da.tar.gz rspamd-8d080cdc349ee281701ae185d2053314611875da.zip |
[Fix] Fix setting of path and cpath for Lua
-rw-r--r-- | src/lua/lua_common.c | 29 |
1 files changed, 27 insertions, 2 deletions
diff --git a/src/lua/lua_common.c b/src/lua/lua_common.c index 2af506f13..58c728607 100644 --- a/src/lua/lua_common.c +++ b/src/lua/lua_common.c @@ -253,14 +253,25 @@ rspamd_lua_set_path (lua_State *L, struct rspamd_config *cfg, GHashTable *vars) if (additional_path) { rspamd_snprintf (path_buf, sizeof (path_buf), - "%s/lua/?.lua;%s/lua/?.lua;%s/?.lua;%s/?.lua;%s/?.so;%s;%s", + "%s/lua/?.lua;" + "%s/lua/?.lua;" + "%s/?.lua;" + "%s/?.lua;" + "%s/?/init.lua;" + "%s;" + "%s", pluginsdir, RSPAMD_CONFDIR, rulesdir, lualibdir, lualibdir, additional_path, old_path); } else { rspamd_snprintf (path_buf, sizeof (path_buf), - "%s/lua/?.lua;%s/lua/?.lua;%s/?.lua;%s/?.lua;%s/?.so;%s", + "%s/lua/?.lua;" + "%s/lua/?.lua;" + "%s/?.lua;" + "%s/?.lua;" + "%s/?/init.lua;" + "%s", pluginsdir, RSPAMD_CONFDIR, rulesdir, lualibdir, lualibdir, old_path); @@ -269,6 +280,20 @@ rspamd_lua_set_path (lua_State *L, struct rspamd_config *cfg, GHashTable *vars) lua_pop (L, 1); lua_pushstring (L, path_buf); lua_setfield (L, -2, "path"); + + lua_getglobal (L, "package"); + lua_getfield (L, -1, "cpath"); + old_path = luaL_checkstring (L, -1); + + rspamd_snprintf (path_buf, sizeof (path_buf), + "%s/?.so;" + "%s", + lualibdir, + old_path); + lua_pop (L, 1); + lua_pushstring (L, path_buf); + lua_setfield (L, -2, "cpath"); + lua_pop (L, 1); } |