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