- rename patch to follow convention

- fix for bug preventing coredumps
This commit is contained in:
toppk 2019-09-28 11:23:56 -04:00
parent c021496c15
commit f48abd2745
No known key found for this signature in database
GPG Key ID: 6C771538FA770FB6
4 changed files with 185 additions and 47 deletions

View File

@ -0,0 +1,109 @@
From 0706e021f5bd82cf4c9b2c0d2916d272f3cba406 Mon Sep 17 00:00:00 2001
From: Olivier Fourdan <ofourdan@redhat.com>
Date: Tue, 24 Sep 2019 16:55:25 +0200
Subject: [PATCH 1/2] keybindings: Check for a handler before using it
The `process_event()` would check for a existing keybinding handler and
abort if there is none, however the test is done after the handler had
been accessed, hence defeating the purpose of the check.
Move the check to verify there is an existing keybinding handler before
actually using it.
https://gitlab.gnome.org/GNOME/mutter/issues/823
---
src/core/keybindings.c | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/src/core/keybindings.c b/src/core/keybindings.c
index a5a60e8cd..b9377bfff 100644
--- a/src/core/keybindings.c
+++ b/src/core/keybindings.c
@@ -1955,6 +1955,9 @@ process_event (MetaDisplay *display,
(!window && binding->flags & META_KEY_BINDING_PER_WINDOW))
goto not_found;
+ if (binding->handler == NULL)
+ meta_bug ("Binding %s has no handler\n", binding->name);
+
if (display->focus_window &&
!(binding->handler->flags & META_KEY_BINDING_NON_MASKABLE))
{
@@ -1980,12 +1983,9 @@ process_event (MetaDisplay *display,
return TRUE;
}
- if (binding->handler == NULL)
- meta_bug ("Binding %s has no handler\n", binding->name);
- else
- meta_topic (META_DEBUG_KEYBINDINGS,
- "Running handler for %s\n",
- binding->name);
+ meta_topic (META_DEBUG_KEYBINDINGS,
+ "Running handler for %s\n",
+ binding->name);
/* Global keybindings count as a let-the-terminal-lose-focus
* due to new window mapping until the user starts
--
2.22.0
From 76f2579e442d8ad0a3b8b644daab7c72a585506b Mon Sep 17 00:00:00 2001
From: Olivier Fourdan <ofourdan@redhat.com>
Date: Tue, 24 Sep 2019 16:58:32 +0200
Subject: [PATCH 2/2] keybinding: Check for handler functions as well
With the addition of the locate-pointer special keybinding (defaults to
the [Control] key), we have now two separate special modifier keys which
can be triggered separately, one for the locate-pointer action and
another one for overlay.
When processing those special modifier keys, mutter must ensure that the
key was pressed alone, being a modifier, the key could otherwise be part
of another key combo.
As result, if both special modifiers keys are pressed simultaneously,
mutter will try to trigger the function for the second key being
pressed, and since those special modifier keys have no default handler
function set, that will crash mutter.
Check if the handler has a function associated and treat the keybinding
as not found if no handler function is set, as with the special modifier
keys.
https://gitlab.gnome.org/GNOME/mutter/issues/823
---
src/core/keybindings.c | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/src/core/keybindings.c b/src/core/keybindings.c
index b9377bfff..b86272541 100644
--- a/src/core/keybindings.c
+++ b/src/core/keybindings.c
@@ -1933,6 +1933,12 @@ invoke_handler (MetaDisplay *display,
NULL);
}
+static gboolean
+meta_key_binding_has_handler_func (MetaKeyBinding *binding)
+{
+ return (!!binding->handler->func || !!binding->handler->default_func);
+}
+
static gboolean
process_event (MetaDisplay *display,
MetaWindow *window,
@@ -1958,6 +1964,9 @@ process_event (MetaDisplay *display,
if (binding->handler == NULL)
meta_bug ("Binding %s has no handler\n", binding->name);
+ if (!meta_key_binding_has_handler_func (binding))
+ goto not_found;
+
if (display->focus_window &&
!(binding->handler->flags & META_KEY_BINDING_NON_MASKABLE))
{
--
2.22.0

View File

@ -0,0 +1,73 @@
From dbe9daeb763bffdf2ba4a5fa7c2a3ac8587c0d37 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jonas=20=C3=85dahl?= <jadahl@gmail.com>
Date: Fri, 27 Sep 2019 10:15:48 +0200
Subject: [PATCH] main: Make process PR_SET_DUMPABLE
Otherwise we won't get core dumps if the launching binary has
capabilities set.
https://gitlab.gnome.org/GNOME/mutter/merge_requests/811
---
config.h.meson | 3 +++
meson.build | 4 ++++
src/core/main.c | 8 ++++++++
3 files changed, 15 insertions(+)
diff --git a/config.h.meson b/config.h.meson
index 77045319c..0bab71848 100644
--- a/config.h.meson
+++ b/config.h.meson
@@ -61,6 +61,9 @@
/* XKB base prefix */
#mesondefine XKB_BASE
+/* Whether <sys/prctl.h> exists and it defines prctl() */
+#mesondefine HAVE_SYS_PRCTL
+
/* Either <sys/random.h> or <linux/random.h> */
#mesondefine HAVE_SYS_RANDOM
#mesondefine HAVE_LINUX_RANDOM
diff --git a/meson.build b/meson.build
index ae0bbfcc2..55ab3eb14 100644
--- a/meson.build
+++ b/meson.build
@@ -366,6 +366,10 @@ cdata.set('HAVE_PROFILER', have_profiler)
xkb_base = xkeyboard_config_dep.get_pkgconfig_variable('xkb_base')
cdata.set_quoted('XKB_BASE', xkb_base)
+if cc.has_header_symbol('sys/prctl.h', 'prctl')
+ cdata.set('HAVE_SYS_PRCTL', 1)
+endif
+
if have_wayland
xwayland_path = get_option('xwayland_path')
if xwayland_path == ''
diff --git a/src/core/main.c b/src/core/main.c
index 2724cf076..7f4f666d2 100644
--- a/src/core/main.c
+++ b/src/core/main.c
@@ -70,6 +70,10 @@
#include <systemd/sd-login.h>
#endif /* HAVE_WAYLAND && HAVE_NATIVE_BACKEND */
+#ifdef HAVE_SYS_PRCTL
+#include <sys/prctl.h>
+#endif
+
#include "backends/meta-backend-private.h"
#include "backends/x11/cm/meta-backend-x11-cm.h"
#include "backends/x11/meta-backend-x11.h"
@@ -532,6 +536,10 @@ meta_init (void)
MetaCompositorType compositor_type;
GType backend_gtype;
+#ifdef HAVE_SYS_PRCTL
+ prctl (PR_SET_DUMPABLE, 1);
+#endif
+
sigemptyset (&empty_mask);
act.sa_handler = SIG_IGN;
act.sa_mask = empty_mask;
--
2.22.0

View File

@ -1,46 +0,0 @@
diff --git a/src/core/keybindings.c b/src/core/keybindings.c
index a5a60e8cde30e395968e7d511d599c5a1e56e731..b86272541bd21782b14b63ea10df783f98388d93 100644
--- a/src/core/keybindings.c
+++ b/src/core/keybindings.c
@@ -1933,6 +1933,12 @@ invoke_handler (MetaDisplay *display,
NULL);
}
+static gboolean
+meta_key_binding_has_handler_func (MetaKeyBinding *binding)
+{
+ return (!!binding->handler->func || !!binding->handler->default_func);
+}
+
static gboolean
process_event (MetaDisplay *display,
MetaWindow *window,
@@ -1955,6 +1961,12 @@ process_event (MetaDisplay *display,
(!window && binding->flags & META_KEY_BINDING_PER_WINDOW))
goto not_found;
+ if (binding->handler == NULL)
+ meta_bug ("Binding %s has no handler\n", binding->name);
+
+ if (!meta_key_binding_has_handler_func (binding))
+ goto not_found;
+
if (display->focus_window &&
!(binding->handler->flags & META_KEY_BINDING_NON_MASKABLE))
{
@@ -1980,12 +1992,9 @@ process_event (MetaDisplay *display,
return TRUE;
}
- if (binding->handler == NULL)
- meta_bug ("Binding %s has no handler\n", binding->name);
- else
- meta_topic (META_DEBUG_KEYBINDINGS,
- "Running handler for %s\n",
- binding->name);
+ meta_topic (META_DEBUG_KEYBINDINGS,
+ "Running handler for %s\n",
+ binding->name);
/* Global keybindings count as a let-the-terminal-lose-focus
* due to new window mapping until the user starts

View File

@ -24,7 +24,8 @@ Patch1: 792.patch
Patch2: clutter-timeline-Use-a-function-to-cancel-the-delay-timeo.patch
Patch3: clutter-timeline-Don-t-emit-paused-signal-on-delayed-time.patch
Patch4: clutter-actor-Cancel-delayed-timelines-on-removal.patch
Patch5: 806.patch
Patch5: 0005-keybinding-handle-no-handler-functions.patch
Patch6: 0006-add-PR_SET_DUMPABLE-to-allow-coredumps.patch
BuildRequires: chrpath
@ -172,6 +173,7 @@ desktop-file-validate %{buildroot}/%{_datadir}/applications/%{name}.desktop
%changelog
* Sat Sep 28 2019 Kenneth Topp <toppk@bllue.org> - 3.34.0-5
- Backport fix for dual special modifier keys bug (#1754867)
- Backport fix that enables core dumps (#1748145)
* Fri Sep 27 2019 Kenneth Topp <toppk@bllue.org> - 3.34.0-4
- Backport a patch to prevent crash during animations