From f3ad75691aea30d2d68aab19fbfa9031409c39d7 Mon Sep 17 00:00:00 2001 From: red-001 Date: Fri, 30 Jun 2017 19:14:39 +0100 Subject: Create a filesystem abstraction layer for CSM and only allow accessing files that are scanned into it. (#5965) * Load client-side mods into memory before executing them. This removes the remaining filesystem access that client-sided mods had and it will hopefully make then more secure. * Lua Virtual filesystem: don't load the files into memory just scan the filenames into memory. * Fix the issues with backtrace * fix most of the issues * fix code style. * add a comment --- src/script/lua_api/l_client.cpp | 9 +++++++++ src/script/lua_api/l_client.h | 3 +++ src/script/lua_api/l_util.cpp | 4 +--- 3 files changed, 13 insertions(+), 3 deletions(-) (limited to 'src/script/lua_api') diff --git a/src/script/lua_api/l_client.cpp b/src/script/lua_api/l_client.cpp index 84eafd3f0..1077d5f2d 100644 --- a/src/script/lua_api/l_client.cpp +++ b/src/script/lua_api/l_client.cpp @@ -341,6 +341,14 @@ int ModApiClient::l_get_privilege_list(lua_State *L) } return 1; } + +// get_builtin_path() +int ModApiClient::l_get_builtin_path(lua_State *L) +{ + lua_pushstring(L, BUILTIN_MOD_NAME ":"); + return 1; +} + void ModApiClient::Initialize(lua_State *L, int top) { API_FCT(get_current_modname); @@ -366,4 +374,5 @@ void ModApiClient::Initialize(lua_State *L, int top) API_FCT(get_node_def); API_FCT(take_screenshot); API_FCT(get_privilege_list); + API_FCT(get_builtin_path); } diff --git a/src/script/lua_api/l_client.h b/src/script/lua_api/l_client.h index 2f0c2e3f8..7472915f5 100644 --- a/src/script/lua_api/l_client.h +++ b/src/script/lua_api/l_client.h @@ -95,6 +95,9 @@ private: // get_privilege_list() static int l_get_privilege_list(lua_State *L); + // get_builtin_path() + static int l_get_builtin_path(lua_State *L); + public: static void Initialize(lua_State *L, int top); }; diff --git a/src/script/lua_api/l_util.cpp b/src/script/lua_api/l_util.cpp index 3cf19f024..c68f64a64 100644 --- a/src/script/lua_api/l_util.cpp +++ b/src/script/lua_api/l_util.cpp @@ -246,7 +246,7 @@ int ModApiUtil::l_get_builtin_path(lua_State *L) { NO_MAP_LOCK_REQUIRED; - std::string path = porting::path_share + DIR_DELIM + "builtin"; + std::string path = porting::path_share + DIR_DELIM + "builtin" + DIR_DELIM; lua_pushstring(L, path.c_str()); return 1; @@ -470,8 +470,6 @@ void ModApiUtil::InitializeClient(lua_State *L, int top) API_FCT(is_yes); - API_FCT(get_builtin_path); - API_FCT(compress); API_FCT(decompress); -- cgit v1.2.3