From e8786bb448e94a2eb647e4134fae85b3e1be1f3c Mon Sep 17 00:00:00 2001 From: Simon McVittie Date: Wed, 21 Mar 2018 11:00:03 +0000 Subject: [PATCH] Add patch from upstream fixing a NULL dereference --- debian/changelog | 2 + ...guard-against-gtk_css_widget_node_ge.patch | 43 +++++++++++++++++++ debian/patches/series | 1 + 3 files changed, 46 insertions(+) create mode 100644 debian/patches/0011-gtkstylecontext-guard-against-gtk_css_widget_node_ge.patch diff --git a/debian/changelog b/debian/changelog index fc79ef6250..c3b3362c86 100644 --- a/debian/changelog +++ b/debian/changelog @@ -7,6 +7,8 @@ gtk+3.0 (3.22.29-2) UNRELEASED; urgency=medium d/p/0010-imwayland-Avoid-TOGGLE_INPUT_PANEL-requests-if-there.patch: Add patches from upstream fixing Wayland client crashes under unspecified circumstances (Closes: #893696) + * d/p/0011-gtkstylecontext-guard-against-gtk_css_widget_node_ge.patch: + Add patch from upstream fixing a NULL dereference -- Simon McVittie Wed, 21 Mar 2018 10:32:43 +0000 diff --git a/debian/patches/0011-gtkstylecontext-guard-against-gtk_css_widget_node_ge.patch b/debian/patches/0011-gtkstylecontext-guard-against-gtk_css_widget_node_ge.patch new file mode 100644 index 0000000000..6b02dbff41 --- /dev/null +++ b/debian/patches/0011-gtkstylecontext-guard-against-gtk_css_widget_node_ge.patch @@ -0,0 +1,43 @@ +From: Christoph Reiter +Date: Mon, 19 Mar 2018 18:21:25 +0100 +Subject: gtkstylecontext: guard against gtk_css_widget_node_get_widget() + returning NULL in more places + +When the widget gets finalized it clears the widgetnode and gtk_css_widget_node_get_widget +returns NULL. Guard against gtk_css_widget_node_get_widget() returning NULL like in other +places. + +See https://gitlab.gnome.org/GNOME/pygobject/issues/28#note_82862 + +Origin: upstream, 3.22.30, commit:d65a4c2e0abeefb1e61e32a2da2c1e1ba9987817 +--- + gtk/gtkstylecontext.c | 9 +++++++-- + 1 file changed, 7 insertions(+), 2 deletions(-) + +diff --git a/gtk/gtkstylecontext.c b/gtk/gtkstylecontext.c +index 4ef6d57..2606815 100644 +--- a/gtk/gtkstylecontext.c ++++ b/gtk/gtkstylecontext.c +@@ -187,7 +187,11 @@ gtk_style_context_real_changed (GtkStyleContext *context) + GtkStyleContextPrivate *priv = context->priv; + + if (GTK_IS_CSS_WIDGET_NODE (priv->cssnode)) +- _gtk_widget_style_context_invalidated (gtk_css_widget_node_get_widget (GTK_CSS_WIDGET_NODE (priv->cssnode))); ++ { ++ GtkWidget *widget = gtk_css_widget_node_get_widget (GTK_CSS_WIDGET_NODE (priv->cssnode)); ++ if (widget != NULL) ++ _gtk_widget_style_context_invalidated (widget); ++ } + } + + static void +@@ -522,7 +526,8 @@ gtk_style_context_push_state (GtkStyleContext *context, + { + GtkWidget *widget = gtk_css_widget_node_get_widget (GTK_CSS_WIDGET_NODE (root)); + g_debug ("State %u for %s %p doesn't match state %u set via gtk_style_context_set_state ()", +- state, gtk_widget_get_name (widget), widget, gtk_css_node_get_state (priv->cssnode)); ++ state, (widget == NULL) ? "(null)" : gtk_widget_get_name (widget), ++ widget, gtk_css_node_get_state (priv->cssnode)); + } + else + { diff --git a/debian/patches/series b/debian/patches/series index f04e81d129..3b5df2403c 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -8,3 +8,4 @@ reftest-known-fail.patch gdk-x11-Check-if-we-have-access-to-GL-before-using-G.patch 0009-gtkimmodule-make-match_backend-query-the-wayland-reg.patch 0010-imwayland-Avoid-TOGGLE_INPUT_PANEL-requests-if-there.patch +0011-gtkstylecontext-guard-against-gtk_css_widget_node_ge.patch