From e2aeb7f3361b87e61a8bc5f478bb2dab056b1ac4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Ekl=C3=B6f?= Date: Sat, 21 Sep 2024 09:08:40 +0200 Subject: [PATCH] render: xcursor_is_valid(): don't crash when there's no theme loaded When trying to set a custom cursor shape, we first validate it. This is done by checking against known server-side names, and then trying to load the cursor from the client side cursor theme. But, if we're using server side names, there is no theme loaded, and foot crashed. Fix by checking if we have a theme loaded, and if not, fail the cursor shape name validation. --- CHANGELOG.md | 2 ++ render.c | 2 ++ 2 files changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 622617b2..3a0cdfad 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -98,6 +98,8 @@ * "Too large" values for `scrollback.lines` causing an integer overflow, resulting in either visual glitches, crashes, or both ([#1828][1828]). +* Crash when trying to set an invalid cursor shape with OSC-22, when + foot uses server-side cursor shapes. [1828]: https://codeberg.org/dnkl/foot/issues/1828 diff --git a/render.c b/render.c index 3d1ce4ee..20c0490b 100644 --- a/render.c +++ b/render.c @@ -4722,6 +4722,8 @@ render_xcursor_is_valid(const struct seat *seat, const char *cursor) { if (cursor == NULL) return false; + if (seat->pointer.theme == NULL) + return false; return wl_cursor_theme_get_cursor(seat->pointer.theme, cursor) != NULL; }