diff options
author | 2013-05-02 20:03:15 +0200 | |
---|---|---|
committer | 2013-05-02 21:01:19 +0200 | |
commit | c0b8c35e3ba858ef8e5e47ebc45ccaa88ef86348 (patch) | |
tree | ee7ec6fedced3e6c052d2710e33bdb8ef721b732 | |
parent | 0d1cd116d7d17e2a61c2d7d93184dde7c655c947 (diff) |
wayland: use new function xkb_keymap_from_buffer
Bump xkbcommon version and use the new xkb_keymap_from_buffer. This is more
secure, because the from_string expects a 0 terminated string, but this cannot
be guaranteed with mmap.
-rwxr-xr-x | configure | 2 | ||||
-rw-r--r-- | video/out/wayland_common.c | 14 |
2 files changed, 6 insertions, 10 deletions
@@ -1786,7 +1786,7 @@ fi #if darwin echocheck "Wayland" if test "$_wayland" != no; then _wayland="no" - pkg_config_add "wayland-client >= 1.0.0 wayland-egl >= 9.0.0 wayland-cursor >= 1.0.0 xkbcommon >= 0.2.0" \ + pkg_config_add "wayland-client >= 1.0.0 wayland-egl >= 9.0.0 wayland-cursor >= 1.0.0 xkbcommon >= 0.3.0" \ && _wayland="yes" res_comment="" else diff --git a/video/out/wayland_common.c b/video/out/wayland_common.c index 8c8033f87a..0bcd9395be 100644 --- a/video/out/wayland_common.c +++ b/video/out/wayland_common.c @@ -217,15 +217,10 @@ static void keyboard_handle_keymap(void *data, int32_t fd, uint32_t size) { - struct vo_wayland_input *input = ((struct vo_wayland_state *) data)->input; + struct vo_wayland_input *input; char *map_str; - if(!data) { - close(fd); - return; - } - - if (format != WL_KEYBOARD_KEYMAP_FORMAT_XKB_V1) { + if(!data || format != WL_KEYBOARD_KEYMAP_FORMAT_XKB_V1) { close(fd); return; } @@ -236,8 +231,9 @@ static void keyboard_handle_keymap(void *data, return; } - input->xkb.keymap = xkb_map_new_from_string(input->xkb.context, - map_str, XKB_KEYMAP_FORMAT_TEXT_V1, 0); + input = ((struct vo_wayland_state *) data)->input; + input->xkb.keymap = xkb_keymap_new_from_buffer(input->xkb.context, + map_str, size, XKB_KEYMAP_FORMAT_TEXT_V1, 0); munmap(map_str, size); close(fd); |