[mate-desktop] 02/04: debian/patches: Add 0001_fix-pkexec-calls-in-desktop-launcher.patch. In mate-desktop-item.c: Add a child watch if "do not reap child" flag is set. This avoids double forking with desktop files that have "exec pkexec ..." inside. (Closes: #781246).

Mike Gabriel sunweaver at debian.org
Mon Apr 6 08:31:54 UTC 2015


This is an automated email from the git hooks/post-receive script.

sunweaver pushed a commit to branch master
in repository mate-desktop.

commit e2c28f9a4369cc9a308c797d12c77f35ce9d351f
Author: Mike Gabriel <mike.gabriel at das-netzwerkteam.de>
Date:   Sat Mar 28 14:39:35 2015 +0100

    debian/patches: Add 0001_fix-pkexec-calls-in-desktop-launcher.patch. In mate-desktop-item.c: Add a child watch if "do not reap child" flag is set. This avoids double forking with desktop files that have "exec pkexec ..." inside. (Closes: #781246).
---
 ...0001_fix-pkexec-calls-in-desktop-launcher.patch | 64 ++++++++++++++++++++++
 debian/patches/series                              |  1 +
 2 files changed, 65 insertions(+)

diff --git a/debian/patches/0001_fix-pkexec-calls-in-desktop-launcher.patch b/debian/patches/0001_fix-pkexec-calls-in-desktop-launcher.patch
new file mode 100644
index 0000000..d7e456c
--- /dev/null
+++ b/debian/patches/0001_fix-pkexec-calls-in-desktop-launcher.patch
@@ -0,0 +1,64 @@
+From 1a779ce4a20e578e6e73789dbc75876838f2e012 Mon Sep 17 00:00:00 2001
+From: Monsta <monsta at inbox.ru>
+Date: Wed, 25 Mar 2015 15:21:34 +0300
+Subject: [PATCH] mate-desktop-item: add a child watch if "do not reap child"
+ flag set
+
+similar to https://git.gnome.org/browse/gnome-panel/commit/?id=76acc5b
+
+avoids double forking with desktop files that have "exec pkexec ..."
+inside.
+---
+ libmate-desktop/mate-desktop-item.c | 17 ++++++++++++++++-
+ 1 file changed, 16 insertions(+), 1 deletion(-)
+
+diff --git a/libmate-desktop/mate-desktop-item.c b/libmate-desktop/mate-desktop-item.c
+index eb004d9..c0ee1da 100644
+--- a/libmate-desktop/mate-desktop-item.c
++++ b/libmate-desktop/mate-desktop-item.c
+@@ -1721,6 +1721,17 @@ make_environment_for_screen (GdkScreen  *screen,
+ 	return retval;
+ }
+ 
++static void
++dummy_child_watch (GPid         pid,
++		   gint         status,
++		   gpointer user_data)
++{
++	/* Nothing, this is just to ensure we don't double fork
++	 * and break pkexec:
++	 * https://bugzilla.gnome.org/show_bug.cgi?id=675789
++	 */
++}
++
+ static int
+ ditem_execute (const MateDesktopItem *item,
+ 	       const char *exec,
+@@ -1749,6 +1760,7 @@ ditem_execute (const MateDesktopItem *item,
+ 	char *new_exec, *uris, *temp;
+ 	char *exec_locale;
+ 	int launched = 0;
++	GPid pid;
+ #ifdef HAVE_STARTUP_NOTIFICATION
+ 	GdkDisplay *gdkdisplay;
+ 	SnLauncherContext *sn_context;
+@@ -1957,14 +1969,17 @@ ditem_execute (const MateDesktopItem *item,
+ 				      (do_not_reap_child ? G_SPAWN_DO_NOT_REAP_CHILD : 0) | G_SPAWN_SEARCH_PATH /* flags */,
+ 				      NULL, /* child_setup_func */
+ 				      NULL, /* child_setup_func_data */
+-				      &ret /* child_pid */,
++				      (do_not_reap_child ? &pid : NULL) /* child_pid */,
+ 				      error)) {
+ 			/* The error was set for us,
+ 			 * we just can't launch this thingie */
+ 			ret = -1;
+ 			g_strfreev (real_argv);
+ 			break;
++		} else if (do_not_reap_child) {
++			g_child_watch_add (pid, dummy_child_watch, NULL);
+ 		}
++
+ 		launched ++;
+ 
+ 		g_strfreev (real_argv);
+
diff --git a/debian/patches/series b/debian/patches/series
index c97dc73..661b138 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1 +1,2 @@
+0001_fix-pkexec-calls-in-desktop-launcher.patch
 2001_omit-gfdl-licensed-user-guide.patch

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-mate/mate-desktop.git



More information about the pkg-mate-commits mailing list