app: Work around pkexec restriction when launching
Unless automatic child reaping is disabled in GSpawnFlags, glib's g_spawn_* functions will reparent the spawned process to init by double-forking. Unfortunately pkexec bails out in this case[0], which means that it no longer works in .desktop files since the PID tracking removal in commit 01c6392c1373. Fix this by going back to manual child reaping. [0] https://cgit.freedesktop.org/polkit/tree/src/programs/pkexec.c#n728 https://bugzilla.gnome.org/show_bug.cgi?id=763531
This commit is contained in:
parent
c9d5677c2f
commit
053b8da89c
@ -1196,6 +1196,14 @@ app_child_setup (gpointer user_data)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
static void
|
||||||
|
wait_pid (GDesktopAppInfo *appinfo,
|
||||||
|
GPid pid,
|
||||||
|
gpointer user_data)
|
||||||
|
{
|
||||||
|
g_child_watch_add (pid, (GChildWatchFunc) g_spawn_close_pid, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* shell_app_launch:
|
* shell_app_launch:
|
||||||
* @timestamp: Event timestamp, or 0 for current event timestamp
|
* @timestamp: Event timestamp, or 0 for current event timestamp
|
||||||
@ -1234,13 +1242,13 @@ shell_app_launch (ShellApp *app,
|
|||||||
|
|
||||||
ret = g_desktop_app_info_launch_uris_as_manager (app->info, NULL,
|
ret = g_desktop_app_info_launch_uris_as_manager (app->info, NULL,
|
||||||
context,
|
context,
|
||||||
G_SPAWN_SEARCH_PATH,
|
G_SPAWN_SEARCH_PATH | G_SPAWN_DO_NOT_REAP_CHILD,
|
||||||
#ifdef HAVE_SYSTEMD
|
#ifdef HAVE_SYSTEMD
|
||||||
app_child_setup, (gpointer)shell_app_get_id (app),
|
app_child_setup, (gpointer)shell_app_get_id (app),
|
||||||
#else
|
#else
|
||||||
NULL, NULL,
|
NULL, NULL,
|
||||||
#endif
|
#endif
|
||||||
NULL, NULL,
|
wait_pid, NULL,
|
||||||
error);
|
error);
|
||||||
g_object_unref (context);
|
g_object_unref (context);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user