1
0
Fork 0
mirror of https://github.com/luanti-org/luanti.git synced 2025-06-27 16:36:03 +00:00

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
This commit is contained in:
red-001 2017-06-30 19:14:39 +01:00 committed by Loïc Blot
parent 2e53801fc0
commit f3ad75691a
24 changed files with 230 additions and 101 deletions

View file

@ -54,6 +54,12 @@ extern "C" {
#define setOriginFromTable(index) \
setOriginFromTableRaw(index, __FUNCTION__)
enum class ScriptingType: u8 {
Client,
Server,
MainMenu
};
class Server;
#ifndef SERVER
class Client;
@ -73,6 +79,10 @@ public:
void loadMod(const std::string &script_path, const std::string &mod_name);
void loadScript(const std::string &script_path);
#ifndef SERVER
void loadModFromMemory(const std::string &mod_name);
#endif
void runCallbacksRaw(int nargs,
RunCallbacksMode mode, const char *fxn);
@ -82,6 +92,8 @@ public:
IGameDef *getGameDef() { return m_gamedef; }
Server* getServer();
void setType(ScriptingType type) { m_type = type; }
ScriptingType getType() { return m_type; }
#ifndef SERVER
Client* getClient();
#endif
@ -133,6 +145,7 @@ private:
IGameDef *m_gamedef = nullptr;
Environment *m_environment = nullptr;
GUIEngine *m_guiengine = nullptr;
ScriptingType m_type;
};
#endif /* S_BASE_H_ */