mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2026-05-04 20:46:11 +02:00
BUG/MINOR: vars: make smp_fetch_var() more robust against misuses
smp_fetch_var() may be called from everywhere since it just reads a variable. It must ensure that the stream exists before trying to return a stream-dependant variable. For now there is no impact but it will cause trouble with tcp-request session rules.
This commit is contained in:
parent
108a8fd8be
commit
7513d001c8
16
src/vars.c
16
src/vars.c
@ -242,11 +242,21 @@ static int smp_fetch_var(const struct arg *args, struct sample *smp, const char
|
||||
|
||||
/* Check the availibity of the variable. */
|
||||
switch (var_desc->scope) {
|
||||
case SCOPE_SESS: vars = &smp->sess->vars; break;
|
||||
case SCOPE_TXN: vars = &smp->strm->vars_txn; break;
|
||||
case SCOPE_SESS:
|
||||
vars = &smp->sess->vars;
|
||||
break;
|
||||
case SCOPE_TXN:
|
||||
if (!smp->strm)
|
||||
return 0;
|
||||
vars = &smp->strm->vars_txn;
|
||||
break;
|
||||
case SCOPE_REQ:
|
||||
case SCOPE_RES:
|
||||
default: vars = &smp->strm->vars_reqres; break;
|
||||
default:
|
||||
if (!smp->strm)
|
||||
return 0;
|
||||
vars = &smp->strm->vars_reqres;
|
||||
break;
|
||||
}
|
||||
if (vars->scope != var_desc->scope)
|
||||
return 0;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user