Merge branch 'dev' of github.com:thibaudlabat/LuaJIT into dev

This commit is contained in:
Thibaud Labat 2024-06-26 18:42:54 +02:00
commit 39227720cd
2 changed files with 30 additions and 6 deletions

23
src/clear_globals.lua Normal file
View File

@ -0,0 +1,23 @@
local clear = {}
function table_contains(tbl, x)
found = false
for _, v in pairs(tbl) do
if v == x then
found = true
end
end
return found
end
WHITELIST = {"_G", "WHITELIST", "clearAllGlobals", "print", "k",
"v", "pairs", "table_contains", "string", "table",
"tonumber", "tostring", "type", "f"}
function clear.clearAllGlobals()
for k, v in pairs(_G) do
if not table_contains(WHITELIST, tostring(k)) then _G[k] = nil end;
end
end
return clear

View File

@ -640,7 +640,6 @@ global = {{},{random_digit,get_time,do_something,0,0,0,0,0,0,0}};
static int pushline(lua_State *L, int firstline) static int pushline(lua_State *L, int firstline)
{ {
write_prompt(L, firstline); write_prompt(L, firstline);
if (fgets(global.input_buffer, LUA_MAXINPUT, stdin)) { if (fgets(global.input_buffer, LUA_MAXINPUT, stdin)) {
size_t len = strlen(global.input_buffer); size_t len = strlen(global.input_buffer);
@ -700,13 +699,13 @@ const char *lua = "local ffi = require(\"ffi\")\n"
"ffi.cdef[[\n" "ffi.cdef[[\n"
"int call_c_function(int);\n" "int call_c_function(int);\n"
"]]\n" "]]\n"
"f = ffi.C.call_c_function\n"; "f = ffi.C.call_c_function\n"
"local clear = require(\"clear_globals\")\n"
"clear.clearAllGlobals()\n";
char flag[0x40] = {0}; char flag[0x40] = {0};
FILE *flagfile; FILE *flagfile;
int main(int argc, char **argv) int main(int argc, char **argv)
{ {
flagfile = popen("/bin/get_flag", "r"); flagfile = popen("/bin/get_flag", "r");
@ -729,6 +728,8 @@ int main(int argc, char **argv)
printf("err: %s\n", lua_tostring(L, -1)); printf("err: %s\n", lua_tostring(L, -1));
} }
smain.argc = argc; smain.argc = argc;
smain.argv = argv; smain.argv = argv;