From 31e7ba71249f3e493e65bd497d40eca3b15147be Mon Sep 17 00:00:00 2001 From: =?utf8?q?Marek=20Ol=C5=A1=C3=A1k?= Date: Sun, 19 Feb 2017 19:28:14 +0100 Subject: [PATCH] gallium/hud: prevent an infinite loop MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit v2: use UINT64_MAX / 11 Reviewed-by: Nicolai Hähnle --- src/gallium/auxiliary/hud/hud_context.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) 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); } -- 2.30.2