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
This commit is contained in:
Daniel Eklöf 2026-06-12 18:00:20 +02:00
parent 35f30e6451
commit c9c448e611
No known key found for this signature in database
GPG key ID: 5BBD4992C116573F
2 changed files with 4 additions and 2 deletions

View file

@ -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

View file

@ -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))