-
Notifications
You must be signed in to change notification settings - Fork 0
/
payload.lua
66 lines (48 loc) · 1.31 KB
/
payload.lua
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
print("===TESTING gmod_longjmp===")
local _,jit=pcall(require,'jit')
jit=_G.jit or (jit and jit~=true and jit or _G.jit or {status=function() end})
print("lua: INFO",jit.version,jit.arch,jit.status())
jit.on()
jit.on(true,true)
local longjmp=require'longjmp'
longjmp=longjmp~=true and longjmp or _G.longjmp
assert(longjmp.timed(function() return "hi" end),"expected return")
local OK=true
print("lua: Calling infinite loop")
local function long_running()
local a=os.time()
while os.time()-a<5 do longjmp.dummy() end
OK=false
print("lua: SHOULD NOT PRINT!!!!!!!!!!!")
return "ret"
end
local function docall()
print("lua: pcall of longjmp.timed returned: ",pcall(longjmp.timed,long_running))
end
docall()
if OK then
print("lua: Calling jitted infinite loop")
local function long_running()
local n=0
while n<3e9 do n=n+1 end
end
local function docall()
print("lua: pcall of longjmp.timed returned: ",pcall(longjmp.timed,long_running))
end
docall()
print("lua: Calling complex function")
local function long_running()
while true do
if player then player.GetAll()[1]:SteamID() else longjmp.class_cpp() end
end
end
local function docall()
print("lua: pcall of longjmp.timed returned: ",pcall(longjmp.timed,long_running))
end
docall()
docall()
end
if os.execute then
os.execute("sleep 1")
end
print("lua: EOF")