diff options
author | red-001 <red-001@outlook.ie> | 2017-06-30 19:14:39 +0100 |
---|---|---|
committer | Loïc Blot <nerzhul@users.noreply.github.com> | 2017-06-30 20:14:39 +0200 |
commit | f3ad75691aea30d2d68aab19fbfa9031409c39d7 (patch) | |
tree | b73109f1d3d14af91b3593dc80645a1bb70274a8 /src/script/lua_api | |
parent | 2e53801fc0d9ba13afec6c1ddb5e3999f68b96bd (diff) | |
download | minetest-f3ad75691aea30d2d68aab19fbfa9031409c39d7.tar.gz minetest-f3ad75691aea30d2d68aab19fbfa9031409c39d7.tar.bz2 minetest-f3ad75691aea30d2d68aab19fbfa9031409c39d7.zip |
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
Diffstat (limited to 'src/script/lua_api')
-rw-r--r-- | src/script/lua_api/l_client.cpp | 9 | ||||
-rw-r--r-- | src/script/lua_api/l_client.h | 3 | ||||
-rw-r--r-- | src/script/lua_api/l_util.cpp | 4 |
3 files changed, 13 insertions, 3 deletions
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); |