Skip to content
This repository was archived by the owner on Jan 26, 2024. It is now read-only.

createkeyboard: do not segfault if xkb_keymap_new_from_names returns NULL#518

Merged
sevz17 merged 1 commit intodjpohly:mainfrom
link2xt:link2xt/xkb-no-segfault
Nov 19, 2023
Merged

createkeyboard: do not segfault if xkb_keymap_new_from_names returns NULL#518
sevz17 merged 1 commit intodjpohly:mainfrom
link2xt:link2xt/xkb-no-segfault

Conversation

@link2xt
Copy link
Copy Markdown
Contributor

@link2xt link2xt commented Nov 19, 2023

Passing NULL to wlr_keyboard_set_keymap results in a segfault.
Example:

  Thread 1 "dwl" received signal SIGSEGV, Segmentation fault.
  0x00007ffff7e49b64 in xkb_keymap_ref () from /usr/lib/libxkbcommon.so.0
  (gdb) bt
  #0  0x00007ffff7e49b64 in xkb_keymap_ref () at /usr/lib/libxkbcommon.so.0
  #1  0x00007ffff7f06389 in wlr_keyboard_set_keymap () at /usr/lib/libwlroots.so.11
  #2  0x000055555555bc54 in createkeyboard ()
  #3  0x000055555555c283 in inputdevice ()
  #4  0x00007ffff7e8101e in wl_signal_emit_mutable () at /usr/lib/libwayland-server.so.0
  #5  0x00007ffff7e8101e in wl_signal_emit_mutable () at /usr/lib/libwayland-server.so.0
  #6  0x00007ffff7edb52c in  () at /usr/lib/libwlroots.so.11
  #7  0x00007ffff7ee44b6 in  () at /usr/lib/libwlroots.so.11
  #8  0x000055555555fe66 in main ()

…NULL

Passing NULL to wlr_keyboard_set_keymap results in a segfault.
Example:

  Thread 1 "dwl" received signal SIGSEGV, Segmentation fault.
  0x00007ffff7e49b64 in xkb_keymap_ref () from /usr/lib/libxkbcommon.so.0
  (gdb) bt
  #0  0x00007ffff7e49b64 in xkb_keymap_ref () at /usr/lib/libxkbcommon.so.0
  djpohly#1  0x00007ffff7f06389 in wlr_keyboard_set_keymap () at /usr/lib/libwlroots.so.11
  djpohly#2  0x000055555555bc54 in createkeyboard ()
  djpohly#3  0x000055555555c283 in inputdevice ()
  djpohly#4  0x00007ffff7e8101e in wl_signal_emit_mutable () at /usr/lib/libwayland-server.so.0
  djpohly#5  0x00007ffff7e8101e in wl_signal_emit_mutable () at /usr/lib/libwayland-server.so.0
  djpohly#6  0x00007ffff7edb52c in  () at /usr/lib/libwlroots.so.11
  djpohly#7  0x00007ffff7ee44b6 in  () at /usr/lib/libwlroots.so.11
  djpohly#8  0x000055555555fe66 in main ()
@link2xt
Copy link
Copy Markdown
Contributor Author

link2xt commented Nov 19, 2023

My problem was that XKB_DEFAULT_LAYOUT was set to dvorak (this should be us and dvorak should go into XKB_DEFAULT_LAYOUT), but this should not result in a NULL pointer dereference.

@sevz17 sevz17 merged commit b4da974 into djpohly:main Nov 19, 2023
@sevz17
Copy link
Copy Markdown
Collaborator

sevz17 commented Nov 19, 2023

Thanks!

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants