diff --git a/src/blua/liolib.c b/src/blua/liolib.c index 100dbb6c15448f1a5a335dc1f7d78e9a2cc865b5..ac168ef1807b81ac0d273ad196cf9ce8b7e1b9fb 100644 --- a/src/blua/liolib.c +++ b/src/blua/liolib.c @@ -17,6 +17,9 @@ #include "lauxlib.h" #include "lualib.h" +#include "../i_system.h" +#include "../doomdef.h" +#include "../m_misc.h" @@ -173,11 +176,14 @@ static int io_open (lua_State *L) { } } if (strstr(filename, "..") || strchr(filename, ':') || StartsWith(filename, "\\") - || StartsWith(filename, "/") || !pass) + || StartsWith(filename, "/") || strchr(filename, '%') || !pass) { luaL_error(L,"access denied to %s", filename); return pushresult(L,0,filename); } + I_mkdir("luafiles", 0755); + char* destFilename = va("luafiles"PATHSEP"%s", filename); + filename = destFilename; const char *mode = luaL_optstring(L, 2, "r"); FILE **pf = newfile(L); *pf = fopen(filename, mode);