aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDrew DeVault <sir@cmpwn.com>2017-09-28 21:30:13 -0400
committerGitHub <noreply@github.com>2017-09-28 21:30:13 -0400
commit6479fb27be364ef6ee7c5289c18d015ec3d8c2f3 (patch)
tree7fbef2b1d75c1b1c010c29a494b1d5526a2c013a
parentada7fde6fbb1d4cc85f61ef03c8139bf92a9ca10 (diff)
parent0f56326cb82f8bfa22c653a7e6b57d51ad0c3c3d (diff)
Merge pull request #169 from acrisci/bug/keyboard-libinput-free
fix libinput wlr-keyboard use after free
-rw-r--r--backend/libinput/keyboard.c1
-rw-r--r--types/wlr_keyboard.c2
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) {