package/cog: fix segfaults on null xkb_data keymap/state

Fixes:
Program terminated with signal SIGSEGV, Segmentation fault.
#0  xkb_state_key_get_layout (state=state@entry=0x0, kc=kc@entry=50) at ../src/state.c:217

Program terminated with signal SIGSEGV, Segmentation fault.
#0  XkbKey (kc=kc@entry=45, keymap=0x0) at ../src/keymap.h:430

Signed-off-by: James Hilliard <james.hilliard1@gmail.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
This commit is contained in:
James Hilliard 2020-03-27 12:26:39 -06:00 committed by Thomas Petazzoni
parent 4ef8c5d3dd
commit 75fbc58f3f
2 changed files with 60 additions and 0 deletions

View File

@ -0,0 +1,30 @@
From 575ef199984ae4e8510ed36f8b1ae1babdff8ea9 Mon Sep 17 00:00:00 2001
From: James Hilliard <james.hilliard1@gmail.com>
Date: Thu, 26 Mar 2020 07:48:19 -0600
Subject: [PATCH] fdo: ensure xkb_data.state is not null before calling
xkb_state_key_get_one_sym (#192)
[james.hilliard1@gmail.com: backport from upstream commit
575ef199984ae4e8510ed36f8b1ae1babdff8ea9]
Signed-off-by: James Hilliard <james.hilliard1@gmail.com>
---
platform/cog-platform-fdo.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/platform/cog-platform-fdo.c b/platform/cog-platform-fdo.c
index 043f91d..93ff255 100644
--- a/platform/cog-platform-fdo.c
+++ b/platform/cog-platform-fdo.c
@@ -919,6 +919,9 @@ capture_app_key_bindings (uint32_t keysym,
static void
handle_key_event (uint32_t key, uint32_t state, uint32_t time)
{
+ if (xkb_data.state == NULL)
+ return;
+
uint32_t keysym = xkb_state_key_get_one_sym (xkb_data.state, key);
uint32_t unicode = xkb_state_key_get_utf32 (xkb_data.state, key);
--
2.20.1

View File

@ -0,0 +1,30 @@
From 817f6c9dafd5ad23722eae0a8f43ba9211f37c95 Mon Sep 17 00:00:00 2001
From: James Hilliard <james.hilliard1@gmail.com>
Date: Thu, 26 Mar 2020 07:49:05 -0600
Subject: [PATCH] fdo: ensure xkb_data.keymap is not null before calling
xkb_keymap_key_repeats (#193)
[james.hilliard1@gmail.com: backport from upstream commit
817f6c9dafd5ad23722eae0a8f43ba9211f37c95]
Signed-off-by: James Hilliard <james.hilliard1@gmail.com>
---
platform/cog-platform-fdo.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/platform/cog-platform-fdo.c b/platform/cog-platform-fdo.c
index 93ff255..ecc05e9 100644
--- a/platform/cog-platform-fdo.c
+++ b/platform/cog-platform-fdo.c
@@ -990,7 +990,8 @@ keyboard_on_key (void *data,
memset (&wl_data.keyboard.repeat_data,
0x00,
sizeof (wl_data.keyboard.repeat_data));
- } else if (state == WL_KEYBOARD_KEY_STATE_PRESSED
+ } else if (xkb_data.keymap != NULL
+ && state == WL_KEYBOARD_KEY_STATE_PRESSED
&& xkb_keymap_key_repeats (xkb_data.keymap, key)) {
if (wl_data.keyboard.repeat_data.event_source)
g_source_remove (wl_data.keyboard.repeat_data.event_source);
--
2.20.1