[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#1059524: bookworm-pu: package mate-screensaver/1.26.1-1+deb12u1



Package: release.debian.org
Severity: normal
Tags: bookworm
User: release.debian.org@packages.debian.org
Usertags: pu
X-Debbugs-Cc: mate-screensaver@packages.debian.org
Control: affects -1 + src:mate-screensaver

Two memory leaks were resolved upstream and cherry-picked into this
bookworm-pu.

[ Reason ]
In mate-screensaver's preferences tool two memory leaks were discovered
and resolved by upstream.

[ Impact ]
Memleaks persist for mate-screensaver in bookworm if this upload gets rejected.

[ Tests ]
Manual smoke test.

[ Risks ]
Possible regression. Users of mate-screensaver will be affected.

[ Checklist ]
  [x] *all* changes are documented in the d/changelog
  [x] I reviewed all changes and I approve them
  [x] attach debdiff against the package in (old)stable
  [x] the issue is verified as fixed in unstable

[ Changes ]

+  * debian/patches:
+    + Add 0001_mate-screensaver-preferences-fix-memory-leak.patch and
+      0002_mate-screensaver-preferences-fix-memory-leak.patch, fixing two
+      memleaks in the preferences tool of mate-screensaver.

[ Other info ]
None.
diff -Nru mate-screensaver-1.26.1/debian/changelog mate-screensaver-1.26.1/debian/changelog
--- mate-screensaver-1.26.1/debian/changelog	2021-12-14 07:45:02.000000000 +0100
+++ mate-screensaver-1.26.1/debian/changelog	2023-12-27 15:32:39.000000000 +0100
@@ -1,3 +1,12 @@
+mate-screensaver (1.26.1-1+deb12u1) bookworm; urgency=medium
+
+  * debian/patches:
+    + Add 0001_mate-screensaver-preferences-fix-memory-leak.patch and
+      0002_mate-screensaver-preferences-fix-memory-leak.patch, fixing two
+      memleaks in the preferences tool of mate-screensaver.
+
+ -- Mike Gabriel <sunweaver@debian.org>  Wed, 27 Dec 2023 15:32:39 +0100
+
 mate-screensaver (1.26.1-1) unstable; urgency=medium
 
   * New upstream release.
diff -Nru mate-screensaver-1.26.1/debian/patches/0001_mate-screensaver-preferences-fix-memory-leak.patch mate-screensaver-1.26.1/debian/patches/0001_mate-screensaver-preferences-fix-memory-leak.patch
--- mate-screensaver-1.26.1/debian/patches/0001_mate-screensaver-preferences-fix-memory-leak.patch	1970-01-01 01:00:00.000000000 +0100
+++ mate-screensaver-1.26.1/debian/patches/0001_mate-screensaver-preferences-fix-memory-leak.patch	2023-12-27 15:30:26.000000000 +0100
@@ -0,0 +1,198 @@
+From 8c12ca79d237a36e7d41a644b24c0753cafc968c Mon Sep 17 00:00:00 2001
+From: rbuj <robert.buj@gmail.com>
+Date: Fri, 22 Oct 2021 17:24:56 +0200
+Subject: [PATCH 1/2] mate-screensaver-preferences: fix memory leak
+
+Signed-off-by: Mike Gabriel <mike.gabriel@das-netzwerkteam.de>
+---
+ src/mate-screensaver-preferences.c | 125 +++++++++++++++--------------
+ 1 file changed, 64 insertions(+), 61 deletions(-)
+
+diff --git a/src/mate-screensaver-preferences.c b/src/mate-screensaver-preferences.c
+index 3c7621a..46e780e 100644
+--- a/src/mate-screensaver-preferences.c
++++ b/src/mate-screensaver-preferences.c
+@@ -934,10 +934,14 @@ drag_data_received_cb (GtkWidget        *widget,
+ static char *
+ time_to_string_text (long time)
+ {
+-	char *secs, *mins, *hours, *string;
+-	int   sec, min, hour;
+-
+-	int n, inc_len, len_minutes;
++	char  *secs, *mins, *hours, *string;
++	char  *chk_hour_str, *chk_minute_str, *chk_hour_minute_str;
++	char  *chk_ascii_str;
++	int    sec, min, hour;
++	size_t chk_ascii_len;
++	int    len_minutes;
++	int    n, inc_len;
++	int    diff;
+ 
+ 	sec = time % 60;
+ 	time = time - sec;
+@@ -954,60 +958,63 @@ time_to_string_text (long time)
+ 	secs = g_strdup_printf (ngettext ("%d second",
+ 	                                  "%d seconds", sec), sec);
+ 
+-	inc_len = strlen (g_strdup_printf (_("%s %s"),
+-	                  g_strdup_printf (ngettext ("%d hour",
+-	                                             "%d hours", 1), 1),
+-	                  g_strdup_printf (ngettext ("%d minute",
+-	                                             "%d minutes", 59), 59))) - 1;
++	/* inc_len = it's the lenght of the string "1 hour 59 minutes" */
++	chk_hour_str = g_strdup_printf (ngettext ("%d hour",
++	                                          "%d hours", 1), 1);
++	chk_minute_str = g_strdup_printf (ngettext ("%d minute",
++	                                            "%d minutes", 59), 59);
++	chk_hour_minute_str = g_strdup_printf (_("%s %s"),
++	                                       chk_hour_str, chk_minute_str);
++	inc_len = strlen (chk_hour_minute_str) - 1;
++	g_free (chk_hour_str);
++	g_free (chk_minute_str);
++	g_free (chk_hour_minute_str);
+ 
+ 	len_minutes = 0;
+-
+ 	for (n = 2; n < 60; n++)
+ 	{
+-		if (n < 10)
+-		{
+-			if ((strlen (g_str_to_ascii (g_strdup_printf (ngettext ("%d minute",
+-	                                                                        "%d minutes", n), n), NULL)) - 2) > len_minutes)
++		char   *minute_str    = g_strdup_printf (ngettext ("%d minute",
++		                                                   "%d minutes", n), n);
++		char   *ascii_str     = g_str_to_ascii (minute_str, NULL);
++		size_t  ascii_str_len = strlen (ascii_str);
++		size_t  extra_length  = (n < 10) ? 2 : 3;
+ 
+-				len_minutes = strlen (g_str_to_ascii (g_strdup_printf (ngettext ("%d minute",
+-	                                                                                         "%d minutes", n), n), NULL)) - 2;
+-		}
+-		else
+-		{
+-			if ((strlen (g_str_to_ascii (g_strdup_printf (ngettext ("%d minute",
+-	                                                                        "%d minutes", n), n), NULL)) - 3) > len_minutes)
++		diff = (int) (ascii_str_len - extra_length);
++		if (diff > len_minutes)
++			len_minutes = diff;
+ 
+-				len_minutes = strlen (g_str_to_ascii (g_strdup_printf (ngettext ("%d minute",
+-	                                                                                         "%d minutes", n), n), NULL)) - 3;
+-		}
++		g_free (minute_str);
++		g_free (ascii_str);
+ 	}
+ 
+-	if ((strlen (g_str_to_ascii (g_strdup_printf (ngettext ("%d minute",
+-	                                                        "%d minutes", 1), 1), NULL)) - 2) > len_minutes)
++	/* check the lenght of the string "1 minute" */
++	chk_minute_str = g_strdup_printf (ngettext ("%d minute",
++	                                            "%d minutes", 1), 1);
++	chk_ascii_str = g_str_to_ascii (chk_minute_str, NULL);
++	chk_ascii_len = strlen (chk_ascii_str);
++	diff = (int) (chk_ascii_len - 2);
+ 
+-		len_minutes = strlen (g_str_to_ascii (g_strdup_printf (ngettext ("%d minute",
+-	                                                                         "%d minutes", 1), 1), NULL)) - 2;
++	if (diff > len_minutes)
++		len_minutes = diff;
+ 
++	g_free (chk_minute_str);
++	g_free (chk_ascii_str);
++
++	/* len_minutes = MAX (1, len_minutes) */
+ 	if (len_minutes < 1)
+ 		len_minutes = 1;
+ 
+ 	if (hour > 0)
+ 	{
+ 		if (sec > 0)
+-		{
+ 			/* hour:minutes:seconds */
+ 			string = g_strdup_printf (_("%s %s %s"), hours, mins, secs);
+-		}
+ 		else if (min > 0)
+-		{
+ 			/* hour:minutes */
+ 			string = g_strdup_printf (_("%s %s"), hours, mins);
+-		}
+ 		else
+-		{
+ 			/* hour */
+ 			string = g_strdup_printf (_("%s"), hours);
+-		}
+ 	}
+ 	else if (min > 0)
+ 	{
+@@ -1019,36 +1026,28 @@ time_to_string_text (long time)
+ 		else
+ 		{
+ 			/* minutes */
++			size_t max_len;
++
+ 			string = g_strdup_printf (_("%s"), mins);
+ 
+-			if (min < 10)
+-			{
+-				if (min == 1)
+-					while (strlen (string) != (len_minutes + inc_len + 3))
+-					{
+-						if (strlen (string) % 2 == 0)
+-							string = g_strconcat (string, " ", NULL);
+-						else
+-							string = g_strconcat (" " , string, NULL);
+-					}
+-				else
+-					while (strlen (string) != (len_minutes + inc_len))
+-					{
+-						if (strlen (string) % 2 == 0)
+-							string = g_strconcat (string, " ", NULL);
+-						else
+-							string = g_strconcat (" " , string, NULL);
+-					}
+-			}
++			if (min == 1)
++				max_len = (size_t) (len_minutes + inc_len + 3);
++			else if (min < 10)
++				max_len = (size_t) (len_minutes + inc_len);
+ 			else
++				max_len = (size_t) (len_minutes + inc_len - 1);
++
++			while (strlen (string) != max_len)
+ 			{
+-				while (strlen (string) != (len_minutes + inc_len - 1))
+-				{
+-					if (strlen (string) % 2 == 0)
+-						string = g_strconcat (string, " ", NULL);
+-					else
+-						string = g_strconcat (" " , string, NULL);
+-				}
++				char *string_aux;
++
++				if (strlen (string) % 2 == 0)
++					string_aux = g_strconcat (string, " ", NULL);
++				else
++					string_aux = g_strconcat (" " , string, NULL);
++
++				g_free (string);
++				string = string_aux;
+ 			}
+ 		}
+ 	}
+@@ -1090,7 +1089,11 @@ enabled_checkbox_toggled (GtkToggleButton *button, gpointer user_data)
+ static void
+ picture_filename_changed (GtkFileChooserButton *button, gpointer user_data)
+ {
+-	g_settings_set_string (screensaver_settings, "picture-filename", gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (button)));
++	char *picture_filename;
++
++	picture_filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (button));
++	g_settings_set_string (screensaver_settings, "picture-filename", picture_filename);
++	g_free (picture_filename);
+ }
+ 
+ static void
+-- 
+2.39.2
+
diff -Nru mate-screensaver-1.26.1/debian/patches/0002_mate-screensaver-preferences-fix-memory-leak.patch mate-screensaver-1.26.1/debian/patches/0002_mate-screensaver-preferences-fix-memory-leak.patch
--- mate-screensaver-1.26.1/debian/patches/0002_mate-screensaver-preferences-fix-memory-leak.patch	1970-01-01 01:00:00.000000000 +0100
+++ mate-screensaver-1.26.1/debian/patches/0002_mate-screensaver-preferences-fix-memory-leak.patch	2023-12-27 15:30:26.000000000 +0100
@@ -0,0 +1,42 @@
+From ff4270809d096292a3b532046b6145d7a3b3dfb0 Mon Sep 17 00:00:00 2001
+From: rbuj <robert.buj@gmail.com>
+Date: Sun, 30 Jan 2022 17:59:08 +0100
+Subject: [PATCH 2/2] mate-screensaver-preferences: fix memory leak
+
+Signed-off-by: Mike Gabriel <mike.gabriel@das-netzwerkteam.de>
+---
+ src/mate-screensaver-preferences.c | 9 +++++----
+ 1 file changed, 5 insertions(+), 4 deletions(-)
+
+diff --git a/src/mate-screensaver-preferences.c b/src/mate-screensaver-preferences.c
+index 46e780e..286218e 100644
+--- a/src/mate-screensaver-preferences.c
++++ b/src/mate-screensaver-preferences.c
+@@ -663,19 +663,20 @@ separator_func (GtkTreeModel *model,
+                 GtkTreeIter  *iter,
+                 gpointer      data)
+ {
+-	int   column = GPOINTER_TO_INT (data);
+-	char *text;
++	int       column = GPOINTER_TO_INT (data);
++	gboolean  res = FALSE;
++	char     *text;
+ 
+ 	gtk_tree_model_get (model, iter, column, &text, -1);
+ 
+ 	if (text != NULL && strcmp (text, "__separator") == 0)
+ 	{
+-		return TRUE;
++		res = TRUE;
+ 	}
+ 
+ 	g_free (text);
+ 
+-	return FALSE;
++	return res;
+ }
+ 
+ static void
+-- 
+2.39.2
+
diff -Nru mate-screensaver-1.26.1/debian/patches/series mate-screensaver-1.26.1/debian/patches/series
--- mate-screensaver-1.26.1/debian/patches/series	2020-02-13 11:21:54.000000000 +0100
+++ mate-screensaver-1.26.1/debian/patches/series	2023-12-27 15:30:52.000000000 +0100
@@ -1,2 +1,4 @@
 1002_RDA-support-Make-MATE-s-screensaver-aware-of-being-r.patch
 1003_RDA-Disable-switch-user-button-if-session-is-remote.patch
+0001_mate-screensaver-preferences-fix-memory-leak.patch
+0002_mate-screensaver-preferences-fix-memory-leak.patch

Reply to: