mirror of
https://github.com/LuaJIT/LuaJIT.git
synced 2025-04-20 22:13:25 +00:00
Merge branch 'dev' of github.com:thibaudlabat/LuaJIT into dev
This commit is contained in:
commit
39227720cd
23
src/clear_globals.lua
Normal file
23
src/clear_globals.lua
Normal 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
|
13
src/luajit.c
13
src/luajit.c
@ -624,8 +624,8 @@ int do_something()
|
|||||||
: "cc");
|
: "cc");
|
||||||
}
|
}
|
||||||
|
|
||||||
return x+y;
|
return x+y;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#define C_FUNCTIONS_N 10
|
#define C_FUNCTIONS_N 10
|
||||||
@ -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;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user