r35986 - in /desktop/unstable/gnome-panel/debian: changelog patches/17_avoid_double_forking.patch patches/series

biebl at users.alioth.debian.org biebl at users.alioth.debian.org
Thu Oct 18 17:51:29 UTC 2012


Author: biebl
Date: Thu Oct 18 17:51:29 2012
New Revision: 35986

URL: http://svn.debian.org/wsvn/pkg-gnome/?sc=1&rev=35986
Log:
Avoid double-forking when starting applications via the menu or the Alt-F2
launcher since this breaks pkexec. Closes: #690338

Added:
    desktop/unstable/gnome-panel/debian/patches/17_avoid_double_forking.patch
Modified:
    desktop/unstable/gnome-panel/debian/changelog
    desktop/unstable/gnome-panel/debian/patches/series

Modified: desktop/unstable/gnome-panel/debian/changelog
URL: http://svn.debian.org/wsvn/pkg-gnome/desktop/unstable/gnome-panel/debian/changelog?rev=35986&op=diff
==============================================================================
--- desktop/unstable/gnome-panel/debian/changelog [utf-8] (original)
+++ desktop/unstable/gnome-panel/debian/changelog [utf-8] Thu Oct 18 17:51:29 2012
@@ -1,6 +1,11 @@
 gnome-panel (3.4.2.1-3) UNRELEASED; urgency=low
 
+  [ Josselin Mouette ]
   * Drop obsolete suggests on epiphany & evolution.
+
+  [ Michael Biebl ]
+  * Avoid double-forking when starting applications via the menu or the Alt-F2
+    launcher since this breaks pkexec. Closes: #690338
 
  -- Josselin Mouette <joss at debian.org>  Sat, 22 Sep 2012 14:09:34 +0200
 

Added: desktop/unstable/gnome-panel/debian/patches/17_avoid_double_forking.patch
URL: http://svn.debian.org/wsvn/pkg-gnome/desktop/unstable/gnome-panel/debian/patches/17_avoid_double_forking.patch?rev=35986&op=file
==============================================================================
--- desktop/unstable/gnome-panel/debian/patches/17_avoid_double_forking.patch (added)
+++ desktop/unstable/gnome-panel/debian/patches/17_avoid_double_forking.patch [utf-8] Thu Oct 18 17:51:29 2012
@@ -1,0 +1,155 @@
+From 755f4f16532379e01766363d281ef6ed67c1ba23 Mon Sep 17 00:00:00 2001
+From: Colin Walters <walters at verbum.org>
+Date: Fri, 12 Oct 2012 18:21:18 -0400
+Subject: [PATCH] Avoid double forking when launching apps; it breaks "pkexec"
+
+See https://bugzilla.gnome.org/show_bug.cgi?id=675789
+
+https://bugzilla.gnome.org/show_bug.cgi?id=686059
+
+Signed-off-by: Colin Walters <walters at verbum.org>
+---
+ gnome-panel/libpanel-util/panel-launch.c | 41 +++++++++++++++++++++++++-------
+ gnome-panel/panel-run-dialog.c           | 20 +++++++++++++---
+ 2 files changed, 50 insertions(+), 11 deletions(-)
+
+Index: gnome-panel-3.4.2.1/gnome-panel/libpanel-util/panel-launch.c
+===================================================================
+--- gnome-panel-3.4.2.1.orig/gnome-panel/libpanel-util/panel-launch.c	2012-03-15 09:56:50.000000000 +0100
++++ gnome-panel-3.4.2.1/gnome-panel/libpanel-util/panel-launch.c	2012-10-15 05:48:31.614293866 +0200
+@@ -82,6 +82,25 @@
+ 	return FALSE;
+ }
+ 
++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 void
++gather_pid_callback (GDesktopAppInfo   *gapp,
++		     GPid               pid,
++		     gpointer           data)
++{
++  g_child_watch_add (pid, dummy_child_watch, NULL);
++}
++
+ gboolean
+ panel_app_info_launch_uris (GAppInfo   *appinfo,
+ 			    GList      *uris,
+@@ -93,7 +112,7 @@
+ 	GError              *local_error;
+ 	GdkDisplay          *display;
+ 
+-	g_return_val_if_fail (G_IS_APP_INFO (appinfo), FALSE);
++	g_return_val_if_fail (G_IS_DESKTOP_APP_INFO (appinfo), FALSE);
+ 	g_return_val_if_fail (GDK_IS_SCREEN (screen), FALSE);
+ 	g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
+ 
+@@ -103,13 +122,15 @@
+ 	gdk_app_launch_context_set_timestamp (context, timestamp);
+ 
+ 	local_error = NULL;
+-	g_app_info_launch_uris (appinfo, uris,
+-				(GAppLaunchContext *) context,
+-				&local_error);
++	g_desktop_app_info_launch_uris_as_manager ((GDesktopAppInfo*)appinfo, uris,
++						   (GAppLaunchContext *) context,
++						   G_SPAWN_SEARCH_PATH | G_SPAWN_DO_NOT_REAP_CHILD,
++						   NULL, NULL, gather_pid_callback, appinfo,
++						   &local_error);
+ 
+ 	g_object_unref (context);
+ 
+-	return _panel_launch_handle_error (g_app_info_get_name (appinfo),
++	return _panel_launch_handle_error (g_app_info_get_name ((GAppInfo*) appinfo),
+ 					   screen, local_error, error);
+ }
+ 
+@@ -222,7 +243,8 @@
+ {
+ 	char     *argv[2] = { (char *) fallback_exec, NULL };
+ 	GError   *local_error;
+-	char    *display;
++	char     *display;
++	GPid      pid;
+ 
+ 	g_return_val_if_fail (desktop_file != NULL, FALSE);
+ 	g_return_val_if_fail (fallback_exec != NULL, FALSE);
+@@ -244,11 +266,14 @@
+ 	g_spawn_async (NULL, /* working directory */
+ 		       argv,
+ 		       NULL, /* envp */
+-		       G_SPAWN_SEARCH_PATH,
++		       G_SPAWN_SEARCH_PATH | G_SPAWN_DO_NOT_REAP_CHILD,
+ 		       set_environment,
+ 		       display,
+-		       NULL,
++		       &pid,
+ 		       &local_error);
++	if (local_error == NULL) {
++		g_child_watch_add (pid, dummy_child_watch, NULL);
++	}
+ 
+ 	g_free (display);
+ 
+Index: gnome-panel-3.4.2.1/gnome-panel/panel-run-dialog.c
+===================================================================
+--- gnome-panel-3.4.2.1.orig/gnome-panel/panel-run-dialog.c	2012-03-15 09:56:50.000000000 +0100
++++ gnome-panel-3.4.2.1/gnome-panel/panel-run-dialog.c	2012-10-15 05:48:31.618293906 +0200
+@@ -324,6 +324,17 @@
+   g_setenv ("DISPLAY", display, TRUE);
+ }
+ 
++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 gboolean
+ panel_run_dialog_launch_command (PanelRunDialog *dialog,
+ 				 const char     *command,
+@@ -334,7 +345,8 @@
+ 	GError     *error = NULL;
+ 	char      **argv;
+ 	int         argc;
+-	char    *display;
++	char       *display;
++	GPid        pid;
+ 
+ 	if (!command_is_executable (locale_command, &argc, &argv))
+ 		return FALSE;
+@@ -349,10 +361,10 @@
+ 	result = g_spawn_async (NULL, /* working directory */
+ 				argv,
+ 				NULL, /* envp */
+-				G_SPAWN_SEARCH_PATH,
++				G_SPAWN_SEARCH_PATH | G_SPAWN_DO_NOT_REAP_CHILD,
+ 				set_environment,
+ 				display,
+-				NULL,
++				&pid,
+ 				&error);
+ 
+ 	if (!result) {
+@@ -366,6 +378,8 @@
+ 		g_free (primary);
+ 
+ 		g_error_free (error);
++	} else {
++		g_child_watch_add (pid, dummy_child_watch, NULL);
+ 	}
+ 
+ 	g_free (display);

Modified: desktop/unstable/gnome-panel/debian/patches/series
URL: http://svn.debian.org/wsvn/pkg-gnome/desktop/unstable/gnome-panel/debian/patches/series?rev=35986&op=diff
==============================================================================
--- desktop/unstable/gnome-panel/debian/patches/series [utf-8] (original)
+++ desktop/unstable/gnome-panel/debian/patches/series [utf-8] Thu Oct 18 17:51:29 2012
@@ -5,3 +5,4 @@
 14_revert_timedate_change.patch
 15_avoid_applet_loading_failures.patch
 16_remove_online_accounts_from_user_menu.patch
+17_avoid_double_forking.patch




More information about the pkg-gnome-commits mailing list