diff options
author | Drew DeVault <sir@cmpwn.com> | 2017-09-28 21:30:13 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-09-28 21:30:13 -0400 |
commit | 6479fb27be364ef6ee7c5289c18d015ec3d8c2f3 (patch) | |
tree | 7fbef2b1d75c1b1c010c29a494b1d5526a2c013a | |
parent | ada7fde6fbb1d4cc85f61ef03c8139bf92a9ca10 (diff) | |
parent | 0f56326cb82f8bfa22c653a7e6b57d51ad0c3c3d (diff) |
Merge pull request #169 from acrisci/bug/keyboard-libinput-free
fix libinput wlr-keyboard use after free
-rw-r--r-- | backend/libinput/keyboard.c | 1 | ||||
-rw-r--r-- | types/wlr_keyboard.c | 2 |
2 files changed, 1 insertions, 2 deletions
diff --git a/backend/libinput/keyboard.c b/backend/libinput/keyboard.c index 2a626148..53c3a61b 100644 --- a/backend/libinput/keyboard.c +++ b/backend/libinput/keyboard.c @@ -21,7 +21,6 @@ static void wlr_libinput_keyboard_destroy(struct wlr_keyboard *wlr_kb) { struct wlr_libinput_keyboard *wlr_libinput_kb = (struct wlr_libinput_keyboard *)wlr_kb; libinput_device_unref(wlr_libinput_kb->libinput_dev); - free(wlr_libinput_kb); } struct wlr_keyboard_impl impl = { diff --git a/types/wlr_keyboard.c b/types/wlr_keyboard.c index dd90b38f..b356f63a 100644 --- a/types/wlr_keyboard.c +++ b/types/wlr_keyboard.c @@ -41,9 +41,9 @@ void wlr_keyboard_destroy(struct wlr_keyboard *kb) { kb->impl->destroy(kb); } else { wl_list_remove(&kb->events.key.listener_list); - free(kb); } close(kb->keymap_fd); + free(kb); } void wlr_keyboard_led_update(struct wlr_keyboard *kb, uint32_t leds) { |