# commit f874a83 # BUG/MINOR: lua: Segfaults with wrong usage of types. # # Patrick reported that this simple configuration made haproxy segfaults: # # global # lua-load /tmp/haproxy.lua # # frontend f1 # mode http # bind :8000 # default_backend b1 # # http-request lua.foo # # backend b1 # mode http # server s1 127.0.0.1:8080 # # with this '/tmp/haproxy.lua' script: # # core.register_action("foo", { "http-req" }, function(txn) # txn.sc:ipmask(txn.f:src(), 24, 112) # end) # # This is due to missing initialization of the array of arguments # passed to hlua_lua2arg_check() which makes it enter code with # corrupted arguments. # # Thanks a lot to Patrick Hemmer for having reported this issue. varnishtest "Basic LUA test h00000" #REQUIRE_OPTIONS=LUA feature ignore_unknown_macro server s1 -repeat 2 { rxreq txresp } -start haproxy h1 -conf { global lua-load ${testdir}/b00000.lua frontend fe1 mode http ${no-htx} option http-use-htx bind "fd@${fe1}" default_backend b1 http-request lua.foo backend b1 mode http ${no-htx} option http-use-htx server s1 ${s1_addr}:${s1_port} } -start client c0 -connect ${h1_fe1_sock} { txreq -url "/foo" rxresp expect resp.status == 200 } client c1 -connect ${h1_fe1_sock} { txreq -url "/foo" rxresp expect resp.status == 200 } client c0 -start client c1 -start client c0 -wait client c1 -wait