From: Valentine Krasnobaeva Date: Thu, 7 Aug 2025 09:54:58 +0000 (+0200) Subject: BUG/MINOR: stick-table: cap sticky counter idx with tune.nb_stk_ctr instead of MAX_SE... X-Git-Tag: v3.3-dev7~52 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=21d5f43aa6e9513d11dff2d80a2a332d92c0a857;p=thirdparty%2Fhaproxy.git BUG/MINOR: stick-table: cap sticky counter idx with tune.nb_stk_ctr instead of MAX_SESS_STKCTR Cap sticky counter index with tune.nb_stk_ctr instead of MAX_SESS_STKCTR for sc-add-gpc. Same logic is already implemented for sc-inc-gpc and sc-set-gpt keywords. So, it seems missed for sc-add-gpc. This fixes the issue #3061 reported at GitHub. Thanks to @ma311 for reporting their analysis of the issue. This should be backported in all versions until 2.8, included 2.8. --- diff --git a/src/stick_table.c b/src/stick_table.c index a1900f66f..cac2de202 100644 --- a/src/stick_table.c +++ b/src/stick_table.c @@ -3157,9 +3157,9 @@ static enum act_parse_ret parse_add_gpc(const char **args, int *arg, struct prox return ACT_RET_PRS_ERR; } - if (rule->arg.gpc.sc >= MAX_SESS_STKCTR) { - memprintf(err, "invalid stick table track ID '%s' for '%s'. The max allowed ID is %d", - cmd_name, args[*arg-1], MAX_SESS_STKCTR-1); + if (rule->arg.gpc.sc >= global.tune.nb_stk_ctr) { + memprintf(err, "invalid stick table track ID '%s'. The max allowed ID is %d (tune.stick-counters)", + args[*arg-1], global.tune.nb_stk_ctr - 1); return ACT_RET_PRS_ERR; } }