From c9c448e61157cf2798f7c571e0e057273d7c3b22 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Ekl=C3=B6f?= Date: Fri, 12 Jun 2026 18:00:20 +0200 Subject: [PATCH] sixel: clamp pan/pad to 5 Pad is always (in real life) 1, and no-one should be setting pan to anything larger than 5 (the largest value possible to set with the sixel init parameters). FWIW, no-one really uses anything but 1 here either. Clamping ensures we don't blow up allocations to something huge, or worse, trigger an overflow that results in a pixel height of 0, causing a division-by-zero. Closes #2371 --- CHANGELOG.md | 2 ++ sixel.c | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ef9c986a..d92676d2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -78,8 +78,10 @@ after a cursor move ([#2383][2383]). * Dracula theme updated to latest official, and light theme alucard added. +* Sixels: pan/pad clamped to 5 ([#2371][2371]). [2383]: https://codeberg.org/dnkl/foot/issues/2383 +[2371]: https://codeberg.org/dnkl/foot/issues/2371 ### Deprecated diff --git a/sixel.c b/sixel.c index 187f1348..0c1ccd1b 100644 --- a/sixel.c +++ b/sixel.c @@ -1888,8 +1888,8 @@ decgra(struct terminal *term, uint8_t c) unsigned ph = nparams > 2 ? term->sixel.params[2] : 0; unsigned pv = nparams > 3 ? term->sixel.params[3] : 0; - pan = pan > 0 ? pan : 1; - pad = pad > 0 ? pad : 1; + pan = pan > 0 ? min(pan, 5) : 1; + pad = pad > 0 ? min(pad, 5) : 1; if (likely(term->sixel.image.width == 0 && term->sixel.image.height == 0))