aboutsummaryrefslogtreecommitdiff
path: root/src/script/lua_api
diff options
context:
space:
mode:
authorred-001 <red-001@outlook.ie>2017-06-30 19:14:39 +0100
committerLoïc Blot <nerzhul@users.noreply.github.com>2017-06-30 20:14:39 +0200
commitf3ad75691aea30d2d68aab19fbfa9031409c39d7 (patch)
treeb73109f1d3d14af91b3593dc80645a1bb70274a8 /src/script/lua_api
parent2e53801fc0d9ba13afec6c1ddb5e3999f68b96bd (diff)
downloadminetest-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.cpp9
-rw-r--r--src/script/lua_api/l_client.h3
-rw-r--r--src/script/lua_api/l_util.cpp4
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);