aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorBenoit Germain <bnt period germain arrobase gmail period com>2014-01-20 15:34:25 +0100
committerBenoit Germain <bnt period germain arrobase gmail period com>2014-01-20 15:34:25 +0100
commitd92a2ca2a43c68854011e2f84ce0a75802d854be (patch)
treee9bbd0b69f67609cdff23664d9a322e532c17a10 /tests
parentcf9b09ff352611fb8cee3679127f3655cbe73ae7 (diff)
downloadlanes-d92a2ca2a43c68854011e2f84ce0a75802d854be.tar.gz
lanes-d92a2ca2a43c68854011e2f84ce0a75802d854be.tar.bz2
lanes-d92a2ca2a43c68854011e2f84ce0a75802d854be.zip
Turn potential malicious-crafted code crashes into normal Lua errors
* bump version to 3.8.1 * new function lane:get_debug_threadname() * Fix invalid memory accesses when fetching the name of a joined lane with lanes:threads() (because its lua_State is closed) * use luaL_newmetatable() to create the metatable for lane objects * prevent malicious code from crashing by calling lane methods without passing the lane as first argument (raise an error instead) * set_debug_threadname() is no longer registered in the function lookup databases because it holds a C pointer as upvalue and it might crash if used maliciously
Diffstat (limited to 'tests')
-rw-r--r--tests/basic.lua9
1 files changed, 7 insertions, 2 deletions
diff --git a/tests/basic.lua b/tests/basic.lua
index 1f4eb1e..5b0d8a7 100644
--- a/tests/basic.lua
+++ b/tests/basic.lua
@@ -413,6 +413,8 @@ PRINT( "\n\n", "---=== :join test ===---", "\n\n")
413 413
414local S= lanes_gen( "table", 414local S= lanes_gen( "table",
415 function(arg) 415 function(arg)
416 set_debug_threadname "join test lane"
417 set_finalizer( function() end)
416 aux= {} 418 aux= {}
417 for i, v in ipairs(arg) do 419 for i, v in ipairs(arg) do
418 table.insert (aux, 1, v) 420 table.insert (aux, 1, v)
@@ -422,11 +424,14 @@ local S= lanes_gen( "table",
422end ) 424end )
423 425
424h= S { 12, 13, 14 } -- execution starts, h[1..3] will get the return values 426h= S { 12, 13, 14 } -- execution starts, h[1..3] will get the return values
425 427-- wait a bit so that the lane hasa chance to set its debug name
428linda:receive(0.5, "gloupti")
429print( "joining with '" .. h:get_debug_threadname() .. "'")
426local a,b,c,d= h:join() 430local a,b,c,d= h:join()
427if h.status == "error" then 431if h.status == "error" then
428 print( "h error: " , a, b, c, d) 432 print( h:get_debug_threadname(), "error: " , a, b, c, d)
429else 433else
434 print( h:get_debug_threadname(), a,b,c,d)
430 assert(a==14) 435 assert(a==14)
431 assert(b==13) 436 assert(b==13)
432 assert(c==12) 437 assert(c==12)