From: Marek Olšák Date: Sun, 19 Feb 2017 18:28:14 +0000 (+0100) Subject: gallium/hud: prevent an infinite loop X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=31e7ba71249f3e493e65bd497d40eca3b15147be;p=mesa.git gallium/hud: prevent an infinite loop v2: use UINT64_MAX / 11 Reviewed-by: Nicolai Hähnle --- diff --git a/src/gallium/auxiliary/hud/hud_context.c b/src/gallium/auxiliary/hud/hud_context.c index aaa52d5b173..c44f8c01a31 100644 --- a/src/gallium/auxiliary/hud/hud_context.c +++ b/src/gallium/auxiliary/hud/hud_context.c @@ -731,9 +731,10 @@ hud_pane_set_max_value(struct hud_pane *pane, uint64_t value) * hard-to-read numbers like 1.753. */ - /* Find the left-most digit. */ + /* Find the left-most digit. Make sure exp10 * 10 and fixup_bytes doesn't + * overflow. (11 is safe) */ exp10 = 1; - for (i = 0; value > 9 * exp10; i++) { + for (i = 0; exp10 <= UINT64_MAX / 11 && exp10 * 9 < value; i++) { exp10 *= 10; fixup_bytes(pane->type, i + 1, &exp10); }