ref: 48d53278a8273bb39ca295e8f163563ab04b3530
parent: 02c7626b5e227e096549e167609445a456202c5a
author: Jacob Moody <moody@posixcafe.org>
date: Sat Oct 11 12:34:48 EDT 2025
gui-wl: check return value when we mmap the keyboard map (thanks David Arroyo) Seems like sometimes sway/wlroots will send us garbage to mmap. Perhaps a bug on their end but we should avoid using garbage if its handed to us.
--- a/gui-wl/wl-cb.c
+++ b/gui-wl/wl-cb.c
@@ -49,12 +49,14 @@
wl = data;
keymap_string = mmap(nil, size, PROT_READ, MAP_SHARED, fd, 0);
- xkb_keymap_unref(keymap);
- keymap = xkb_keymap_new_from_string(wl->xkb_context, keymap_string, XKB_KEYMAP_FORMAT_TEXT_V1, XKB_KEYMAP_COMPILE_NO_FLAGS);
- munmap(keymap_string, size);
+ if (keymap_string != MAP_FAILED) {
+ xkb_keymap_unref(keymap);
+ keymap = xkb_keymap_new_from_string(wl->xkb_context, keymap_string, XKB_KEYMAP_FORMAT_TEXT_V1, XKB_KEYMAP_COMPILE_NO_FLAGS);
+ munmap(keymap_string, size);
+ xkb_state_unref(wl->xkb_state);
+ wl->xkb_state = xkb_state_new(keymap);
+ }
close(fd);
- xkb_state_unref(wl->xkb_state);
- wl->xkb_state = xkb_state_new(keymap);
}
static void
--
⑨