From 1e70cc45c47ab5a45729c396f6f1a7b4c43447047159311d3b066e53d8dbeb09 Mon Sep 17 00:00:00 2001 From: Dominique Leuenberger Date: Thu, 4 Jan 2024 10:24:08 +0000 Subject: [PATCH] Accepting request 1136674 from home:AZhou:branches:GNOME:Factory - Add gnome-control-center-fix-region-preview-crash.patch: nl_langinfo's returned pointer could be invalid after switching locale, so we have to save the result before switch locale to prevent the crash (bsc#1218528, glgo#GNOME/gnome-control-center!2122). OBS-URL: https://build.opensuse.org/request/show/1136674 OBS-URL: https://build.opensuse.org/package/show/GNOME:Factory/gnome-control-center?expand=0&rev=538 --- ...trol-center-fix-region-preview-crash.patch | 51 +++++++++++++++++++ gnome-control-center.changes | 9 ++++ gnome-control-center.spec | 5 +- 3 files changed, 64 insertions(+), 1 deletion(-) create mode 100644 gnome-control-center-fix-region-preview-crash.patch diff --git a/gnome-control-center-fix-region-preview-crash.patch b/gnome-control-center-fix-region-preview-crash.patch new file mode 100644 index 0000000..75b6eb3 --- /dev/null +++ b/gnome-control-center-fix-region-preview-crash.patch @@ -0,0 +1,51 @@ +From d4a522277bcd1e172be57f3525c2d24831bb3cc5 Mon Sep 17 00:00:00 2001 +From: Alynx Zhou +Date: Thu, 4 Jan 2024 10:29:49 +0800 +Subject: [PATCH] system/region: Prevent preview crash from accessing invalid + pointer + +In !2051, we switch back to real locale before setting the label text, +however, according to nl_langinfo's manpage, the returned pointer could +be invalid after switching locale or creating new locale, so the program +may crash. + +To fix this, we save the result before switching locale, so we won't +access the invalid pointer after switch locale. +--- + panels/region/cc-format-preview.c | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +diff --git a/panels/region/cc-format-preview.c b/panels/region/cc-format-preview.c +index 7aea45511..e4f4afa32 100644 +--- a/panels/region/cc-format-preview.c ++++ b/panels/region/cc-format-preview.c +@@ -69,6 +69,7 @@ update_format_examples (CcFormatPreview *self) + g_autofree gchar *s = NULL; + #ifdef LC_MEASUREMENT + const gchar *fmt; ++ gboolean is_imperial = FALSE; + #endif + g_autoptr(GtkPaperSize) paper = NULL; + +@@ -133,6 +134,9 @@ update_format_examples (CcFormatPreview *self) + old_locale = uselocale (locale); + + fmt = nl_langinfo (_NL_MEASUREMENT_MEASUREMENT); ++ /* The returned pointer of nl_langinfo could be invalid after switching ++ locale, so we must use it here. */ ++ is_imperial = fmt && *fmt == 2; + + if (locale != (locale_t) 0) + { +@@ -140,7 +144,7 @@ update_format_examples (CcFormatPreview *self) + freelocale (locale); + } + +- if (fmt && *fmt == 2) ++ if (is_imperial) + gtk_label_set_text (GTK_LABEL (self->measurement_format_label), C_("measurement format", "Imperial")); + else + gtk_label_set_text (GTK_LABEL (self->measurement_format_label), C_("measurement format", "Metric")); +-- +2.43.0 + diff --git a/gnome-control-center.changes b/gnome-control-center.changes index b6aaf82..efe6075 100644 --- a/gnome-control-center.changes +++ b/gnome-control-center.changes @@ -1,3 +1,12 @@ +------------------------------------------------------------------- +Thu Jan 4 02:08:39 UTC 2024 - Alynx Zhou + +- Add gnome-control-center-fix-region-preview-crash.patch: + nl_langinfo's returned pointer could be invalid after switching + locale, so we have to save the result before switch locale to + prevent the crash (bsc#1218528, + glgo#GNOME/gnome-control-center!2122). + ------------------------------------------------------------------- Thu Dec 7 20:53:58 UTC 2023 - Bjørn Lie diff --git a/gnome-control-center.spec b/gnome-control-center.spec index 0573ab6..838a5d9 100644 --- a/gnome-control-center.spec +++ b/gnome-control-center.spec @@ -1,7 +1,7 @@ # # spec file for package gnome-control-center # -# Copyright (c) 2023 SUSE LLC +# Copyright (c) 2024 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -39,6 +39,8 @@ Source99: %{name}-rpmlintrc Patch1: gnome-control-center-disable-error-message-for-NM.patch # PATCH-FIX-UPSTREAM gnome-control-center-add-user-button.patch bsc#1215556 glgo#GNOME/Settings!1927 xwang@suse.com -- Show add user button Patch2: gnome-control-center-add-user-button.patch +# PATCH-FIX-UPSTREAM gnome-control-center-fix-region-preview-crash.patch bsc#1218528 glgo#GNOME/gnome-control-center!2122 alynx.zhou@suse.com -- Fix crash of region preview dialog +Patch3: gnome-control-center-fix-region-preview-crash.patch ### patches for Leap >= 15 plus SLE >= 15, but not TW # PATCH-FEATURE-SLE gnome-control-center-info-never-use-gnome-software.patch bsc#999336 fezhang@suse.com -- info: Never search for gnome-software as an option when checking for updates on SLE and Leap 42.2, because we use gpk-update-viewer. @@ -187,6 +189,7 @@ GNOME control center. %setup -q %patch -P 1 -p1 %patch -P 2 -p1 +%patch -P 3 -p1 # patches for Leap >= 15 plus SLE >= 15, but not TW %if 0%{?sle_version} >= 150000