X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FScripting%2FNasalSys.hxx;h=096a591bed35ce854f2212848456db161f15d4c9;hb=9c63b7713307eb4db9f6df7959fe83977f561c42;hp=d4680f1398ae9d06f6fc80b5a5ce681fb8ea1b73;hpb=9c11dfd545e466d863c7aac2b4dd18328b1e5360;p=flightgear.git diff --git a/src/Scripting/NasalSys.hxx b/src/Scripting/NasalSys.hxx index d4680f139..096a591be 100644 --- a/src/Scripting/NasalSys.hxx +++ b/src/Scripting/NasalSys.hxx @@ -1,13 +1,15 @@ #ifndef __NASALSYS_HXX #define __NASALSYS_HXX -#include -#include +#include // keep before any cppbind include to enable + // SGVec2 conversion. #include +#include #include #include -#include #include +#include +#include // Required only for MSVC #ifdef _MSC_VER @@ -27,7 +29,6 @@ class FGNasalModuleListener; namespace simgear { class BufferedLogCallback; } SGPropertyNode* ghostToPropNode(naRef ref); -SGCondition* conditionGhost(naRef r); class FGNasalSys : public SGSubsystem { @@ -102,8 +103,10 @@ public: void globalsSet(const char* key, naRef val); naRef call(naRef code, int argc, naRef* args, naRef locals); + naRef callWithContext(naContext ctx, naRef code, int argc, naRef* args, naRef locals); naRef callMethod(naRef code, naRef self, int argc, naRef* args, naRef locals); + naRef callMethodWithContext(naContext ctx, naRef code, naRef self, int argc, naRef* args, naRef locals); naRef propNodeGhost(SGPropertyNode* handle); @@ -125,7 +128,21 @@ public: // when done. int gcSave(naRef r); void gcRelease(int key); - + + /** + * Check if IOrules correctly work to limit access from Nasal scripts to the + * file system. + * + * @note Just a simple test is performed to check if access to a path is + * possible which should never be possible (The actual path refers to + * a file/folder named 'do-not-access' in the file system root). + * + * @see http://wiki.flightgear.org/IOrules + * + * @return Whether the check was successful. + */ + bool checkIOrules(); + /// retrive the associated log object, for displaying log /// output somewhere (a UI, presumably) simgear::BufferedLogCallback* log() const @@ -169,9 +186,10 @@ private: void loadScriptDirectory(simgear::Dir nasalDir); void addModule(std::string moduleName, simgear::PathList scripts); static void logError(naContext); - naRef parse(const char* filename, const char* buf, int len); + naRef parse(naContext ctx, const char* filename, const char* buf, int len); naRef genPropsModule(); + bool _inited; naContext _context; naRef _globals, _string;