From 0a32a39f0dd5430cc2520841765b95d0fc0525dc Mon Sep 17 00:00:00 2001 From: Kalev Lember Date: Mon, 26 Sep 2022 22:34:25 +0200 Subject: [PATCH] Backport an upstream patch to fix GParam validation crashes https://gitlab.gnome.org/GNOME/glib/-/issues/2770 --- 2921.patch | 33 +++++++++++++++++++++++++++++++++ glib2.spec | 4 ++++ 2 files changed, 37 insertions(+) create mode 100644 2921.patch diff --git a/2921.patch b/2921.patch new file mode 100644 index 0000000..ef1dcfb --- /dev/null +++ b/2921.patch @@ -0,0 +1,33 @@ +From ea3f17d598d550345e94e4571130e429443e91cb Mon Sep 17 00:00:00 2001 +From: Emmanuele Bassi +Date: Sun, 25 Sep 2022 14:20:24 +0100 +Subject: [PATCH] Empty values are not valid GParamSpec + +The validate() vfunc for GParamSpecParam returns FALSE for empty GValue, +which means the is_valid() vfunc should do the same. + +This avoids a segfault when calling g_param_value_is_valid() on a +GParamSpecParam. + +Fixes: #2770 +--- + gobject/gparamspecs.c | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/gobject/gparamspecs.c b/gobject/gparamspecs.c +index f17b3488b9..17b8606572 100644 +--- a/gobject/gparamspecs.c ++++ b/gobject/gparamspecs.c +@@ -894,6 +894,9 @@ param_param_is_valid (GParamSpec *pspec, + { + GParamSpec *param = value->data[0].v_pointer; + ++ if (param == NULL) ++ return FALSE; ++ + return g_value_type_compatible (G_PARAM_SPEC_TYPE (param), G_PARAM_SPEC_VALUE_TYPE (pspec)); + } + +-- +GitLab + diff --git a/glib2.spec b/glib2.spec index 6a72910..ae9c7f2 100644 --- a/glib2.spec +++ b/glib2.spec @@ -12,6 +12,10 @@ Source0: https://download.gnome.org/sources/glib/2.72/glib-%{version}.tar.xz # https://gitlab.gnome.org/GNOME/glib/-/merge_requests/903 Patch0: gnutls-hmac.patch +# Backported from upstream +# https://gitlab.gnome.org/GNOME/glib/-/merge_requests/2921 +Patch1: 2921.patch + BuildRequires: gcc BuildRequires: gcc-c++ BuildRequires: gettext