BUG/MINOR: stats: Init the metric variable when frontend stats are filled

In stats_fill_fe_stats(), some fields are conditionnal (ST_F_HRSP_* for
instance). But unlike unimplemented fields, for those fields, the <metric>
variable is used to fill the <stats> array, but it is not initialized. This
bug as no impact, because these fields are not used. But it is better to fix
it now to avoid future bugs.

To fix it, the metric is now defined and initialized into the for loop.

The bug was introduced by the commit 0ef54397 ("MEDIUM: stats: allow to
select one field in `stats_fill_fe_stats`"). No backport is needed except if
the above commit is backported. It fixes the issue #1063.
This commit is contained in:
Christopher Faulet 2021-01-25 15:16:41 +01:00
parent 1fc44d494a
commit 8596bfbafd

View File

@ -1632,12 +1632,13 @@ int stats_fill_fe_stats(struct proxy *px, struct field *stats, int len,
enum stat_field *selected_field) enum stat_field *selected_field)
{ {
enum stat_field current_field = (selected_field != NULL ? *selected_field : 0); enum stat_field current_field = (selected_field != NULL ? *selected_field : 0);
struct field metric;
if (len < ST_F_TOTAL_FIELDS) if (len < ST_F_TOTAL_FIELDS)
return 0; return 0;
for (; current_field < ST_F_TOTAL_FIELDS; current_field++) { for (; current_field < ST_F_TOTAL_FIELDS; current_field++) {
struct field metric = { 0 };
switch (current_field) { switch (current_field) {
case ST_F_PXNAME: case ST_F_PXNAME:
metric = mkf_str(FO_KEY|FN_NAME|FS_SERVICE, px->id); metric = mkf_str(FO_KEY|FN_NAME|FS_SERVICE, px->id);