mirror of
https://gitlab.alpinelinux.org/alpine/aports.git
synced 2024-09-20 11:23:16 +00:00
main/tmux: fix server crashes in sixel terminals
This commit is contained in:
parent
4cafd9dad3
commit
966593ab67
2 changed files with 81 additions and 2 deletions
|
@ -2,7 +2,7 @@
|
|||
# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
|
||||
pkgname=tmux
|
||||
pkgver=3.4
|
||||
pkgrel=1
|
||||
pkgrel=2
|
||||
pkgdesc="Tool to control multiple terminals from a single terminal"
|
||||
url="https://tmux.github.io"
|
||||
arch="all"
|
||||
|
@ -10,7 +10,9 @@ license="ISC"
|
|||
depends="ncurses-terminfo-base"
|
||||
makedepends="bison libevent-dev ncurses-dev"
|
||||
subpackages="$pkgname-doc"
|
||||
source="https://github.com/tmux/tmux/releases/download/$pkgver/tmux-$pkgver.tar.gz"
|
||||
source="https://github.com/tmux/tmux/releases/download/$pkgver/tmux-$pkgver.tar.gz
|
||||
sixel.patch
|
||||
"
|
||||
|
||||
# secfixes:
|
||||
# 3.1c-r0:
|
||||
|
@ -48,4 +50,5 @@ package() {
|
|||
|
||||
sha512sums="
|
||||
bd3880211d99d8ee15947000abf8a1832fdfa48b29b2df81b66d5969cf3f4e64e746f984f6139bfc57e3ebee7fe8dc7cbb6bccb779307607de6c376969fecbff tmux-3.4.tar.gz
|
||||
3e6361f775006557ad5e8be2d3ec2e710e912613f74be404431ab087a148706e22366795c5a99e899eda1e25f3193a27375a1022161440eb567e44a50fec43d9 sixel.patch
|
||||
"
|
||||
|
|
76
main/tmux/sixel.patch
Normal file
76
main/tmux/sixel.patch
Normal file
|
@ -0,0 +1,76 @@
|
|||
From aa17f0e0c1c8b3f1d6fc8617613c74f07de66fae Mon Sep 17 00:00:00 2001
|
||||
From: Nicholas Marriott <nicholas.marriott@gmail.com>
|
||||
Date: Thu, 21 Mar 2024 11:37:09 +0000
|
||||
Subject: [PATCH] Fix crash if SIXEL colour register is invalid and remove
|
||||
SIXEL images before reflow to avoid a different crash, from Anindya
|
||||
Mukherjee.
|
||||
|
||||
---
|
||||
image-sixel.c | 3 +++
|
||||
input.c | 2 +-
|
||||
screen-write.c | 4 ++++
|
||||
screen.c | 6 +++---
|
||||
4 files changed, 11 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/image-sixel.c b/image-sixel.c
|
||||
index 3396a22a7f..e23d17f902 100644
|
||||
--- a/image-sixel.c
|
||||
+++ b/image-sixel.c
|
||||
@@ -489,6 +489,9 @@ sixel_print(struct sixel_image *si, struct sixel_image *map, size_t *size)
|
||||
colours = si->colours;
|
||||
ncolours = si->ncolours;
|
||||
}
|
||||
+
|
||||
+ if (ncolours == 0)
|
||||
+ return (NULL);
|
||||
contains = xcalloc(1, ncolours);
|
||||
|
||||
len = 8192;
|
||||
diff --git a/input.c b/input.c
|
||||
index eb421b280e..e6016121ff 100644
|
||||
--- a/input.c
|
||||
+++ b/input.c
|
||||
@@ -1839,7 +1839,7 @@ input_csi_dispatch_sm_private(struct input_ctx *ictx)
|
||||
|
||||
/* Handle CSI graphics SM. */
|
||||
static void
|
||||
-input_csi_dispatch_sm_graphics(struct input_ctx *ictx)
|
||||
+input_csi_dispatch_sm_graphics(__unused struct input_ctx *ictx)
|
||||
{
|
||||
#ifdef ENABLE_SIXEL
|
||||
int n, m, o;
|
||||
diff --git a/screen-write.c b/screen-write.c
|
||||
index 6892d04149..a732f093dc 100644
|
||||
--- a/screen-write.c
|
||||
+++ b/screen-write.c
|
||||
@@ -2283,6 +2283,10 @@ screen_write_sixelimage(struct screen_write_ctx *ctx, struct sixel_image *si,
|
||||
new = sixel_scale(si, 0, 0, 0, y - sy, sx, sy, 1);
|
||||
sixel_free(si);
|
||||
si = new;
|
||||
+
|
||||
+ /* Bail out if the image cannot be scaled. */
|
||||
+ if (si == NULL)
|
||||
+ return;
|
||||
sixel_size_in_cells(si, &x, &y);
|
||||
}
|
||||
|
||||
diff --git a/screen.c b/screen.c
|
||||
index f73a850547..0eaf469886 100644
|
||||
--- a/screen.c
|
||||
+++ b/screen.c
|
||||
@@ -308,12 +308,12 @@ screen_resize_cursor(struct screen *s, u_int sx, u_int sy, int reflow,
|
||||
if (sy != screen_size_y(s))
|
||||
screen_resize_y(s, sy, eat_empty, &cy);
|
||||
|
||||
- if (reflow) {
|
||||
#ifdef ENABLE_SIXEL
|
||||
- image_free_all(s);
|
||||
+ image_free_all(s);
|
||||
#endif
|
||||
+
|
||||
+ if (reflow)
|
||||
screen_reflow(s, sx, &cx, &cy, cursor);
|
||||
- }
|
||||
|
||||
if (cy >= s->grid->hsize) {
|
||||
s->cx = cx;
|
Loading…
Reference in a new issue