Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package gnome-control-center for 
openSUSE:Factory checked in at 2024-01-04 15:55:58
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/gnome-control-center (Old)
 and      /work/SRC/openSUSE:Factory/.gnome-control-center.new.28375 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "gnome-control-center"

Thu Jan  4 15:55:58 2024 rev:240 rq:1136763 version:45.2

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/gnome-control-center/gnome-control-center.changes    
    2023-12-11 21:49:56.742182327 +0100
+++ 
/work/SRC/openSUSE:Factory/.gnome-control-center.new.28375/gnome-control-center.changes
     2024-01-04 15:57:11.132054319 +0100
@@ -1,0 +2,9 @@
+Thu Jan  4 02:08:39 UTC 2024 - Alynx Zhou <[email protected]>
+
+- 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).
+
+-------------------------------------------------------------------

New:
----
  gnome-control-center-fix-region-preview-crash.patch

BETA DEBUG BEGIN:
  New:
- Add gnome-control-center-fix-region-preview-crash.patch:
  nl_langinfo's returned pointer could be invalid after switching
BETA DEBUG END:

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ gnome-control-center.spec ++++++
--- /var/tmp/diff_new_pack.zZxdAH/_old  2024-01-04 15:57:12.132090850 +0100
+++ /var/tmp/diff_new_pack.zZxdAH/_new  2024-01-04 15:57:12.136090996 +0100
@@ -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 @@
 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 [email protected] -- 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 [email protected] -- 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 [email protected] -- 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 @@
 %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

++++++ gnome-control-center-fix-region-preview-crash.patch ++++++
>From d4a522277bcd1e172be57f3525c2d24831bb3cc5 Mon Sep 17 00:00:00 2001
From: Alynx Zhou <[email protected]>
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

Reply via email to