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.

Must be backported to 1.8, 1.7 and 1.6.
This commit is contained in:
Frdric Lcaille 2018-06-15 13:56:04 +02:00 committed by Willy Tarreau
parent 9db0fedb59
commit f874a83b57
1 changed files with 2 additions and 2 deletions

View File

@ -3256,7 +3256,7 @@ __LJMP static int hlua_run_sample_fetch(lua_State *L)
{
struct hlua_smp *hsmp;
struct sample_fetch *f;
struct arg args[ARGM_NBARGS + 1];
struct arg args[ARGM_NBARGS + 1] = {{0}};
int i;
struct sample smp;
@ -3370,7 +3370,7 @@ __LJMP static int hlua_run_sample_conv(lua_State *L)
{
struct hlua_smp *hsmp;
struct sample_conv *conv;
struct arg args[ARGM_NBARGS + 1];
struct arg args[ARGM_NBARGS + 1] = {{0}};
int i;
struct sample smp;