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.
This commit is contained in:
Valentine Krasnobaeva 2025-08-07 11:54:58 +02:00 committed by Willy Tarreau
parent 7656a41784
commit 21d5f43aa6

View File

@ -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;
}
}