BUG/MEDIUM: checks: ensure the health_status is always within bounds

health_adjust() checks for incorrect bounds for the status argument.
With current code, the argument is always a constant from the valid
enum so there is no impact and the check is basically a NOP. However
users running local patches (eg: new checks) might want to recheck
their code.

This fix should be backported to 1.4 which introduced the issue.

Reported-by: Dinko Korunic <dkorunic@reflected.net>
This commit is contained in:
Willy Tarreau 2013-01-24 00:37:39 +01:00
parent f7f057bab9
commit bb95666bac

View File

@ -619,7 +619,7 @@ void health_adjust(struct server *s, short status)
if (s->observe >= HANA_OBS_SIZE) if (s->observe >= HANA_OBS_SIZE)
return; return;
if (status >= HCHK_STATUS_SIZE || !analyze_statuses[status].desc) if (status >= HANA_STATUS_SIZE || !analyze_statuses[status].desc)
return; return;
switch (analyze_statuses[status].lr[s->observe - 1]) { switch (analyze_statuses[status].lr[s->observe - 1]) {