]> git.mxchange.org Git - simgear.git/blobdiff - simgear/nasal/iolib.c
Do not expose both std::isnan() and isnan()
[simgear.git] / simgear / nasal / iolib.c
index 37b6dd50efd5e71e63f73d6dea2a0eb2b788a970..b91190177bb2a758afff2f217f42c3cf993680ee 100644 (file)
@@ -142,6 +142,9 @@ naRef naIOGhost(naContext c, FILE* f)
     return naNewGhost(c, &naIOGhostType, ghost);
 }
 
+#if SG_NASAL_UNRESTRICTED_OPEN
+// Allows unrestricted file access, which would be a security hole
+// Replaced by the one in flightgear src/Scripting/NasalSys.cxx
 static naRef f_open(naContext c, naRef me, int argc, naRef* args)
 {
     FILE* f;
@@ -152,6 +155,7 @@ static naRef f_open(naContext c, naRef me, int argc, naRef* args)
     if(!f) naRuntimeError(c, strerror(errno));
     return naIOGhost(c, f);
 }
+#endif
 
 // frees buffer before tossing an error
 static int getcguard(naContext ctx, FILE* f, void* buf)
@@ -195,14 +199,16 @@ static naRef f_readln(naContext ctx, naRef me, int argc, naRef* args)
     return result;
 }
 
+#ifdef _WIN32
+#define S_ISLNK(m) 0
+#define S_ISSOCK(m) 0
+#endif
 #ifdef _MSC_VER
 #define S_ISREG(m) (((m)&_S_IFMT)==_S_IFREG)
 #define S_ISDIR(m) (((m)&_S_IFMT)==_S_IFDIR)
 #define S_ISCHR(m) (((m)&_S_IFMT)==_S_IFCHR)
 #define S_ISFIFO(m) (((m)&_S_IFMT)==_S_IFIFO)
 #define S_ISBLK(m) 0
-#define S_ISLNK(m) 0
-#define S_ISSOCK(m) 0
 typedef unsigned short mode_t;
 #endif
 static naRef ftype(naContext ctx, mode_t m)
@@ -226,7 +232,7 @@ static naRef f_stat(naContext ctx, naRef me, int argc, naRef* args)
         naRuntimeError(ctx, strerror(errno));
     }
     result = naNewVector(ctx);
-    naVec_setsize(result, 12);
+    naVec_setsize(ctx, result, 12);
 #define FLD(x) naVec_set(result, n++, naNum(s.st_##x));
     FLD(dev);  FLD(ino);  FLD(mode);  FLD(nlink);  FLD(uid);  FLD(gid);
     FLD(rdev); FLD(size); FLD(atime); FLD(mtime);  FLD(ctime);
@@ -242,7 +248,9 @@ static naCFuncItem funcs[] = {
     { "seek", f_seek },
     { "tell", f_tell },
     { "flush", f_flush },
+#if SG_NASAL_UNRESTRICTED_OPEN
     { "open", f_open },
+#endif
     { "readln", f_readln },
     { "stat", f_stat },
     { 0 }