[launchd-changes] [23005] trunk/launchd/src
source_changes at macosforge.org
source_changes at macosforge.org
Thu Jan 4 17:14:24 PST 2007
Revision: 23005
http://trac.macosforge.org/projects/launchd/changeset/23005
Author: zarzycki at apple.com
Date: 2007-01-04 17:14:23 -0800 (Thu, 04 Jan 2007)
Log Message:
-----------
<rdar://problem/4857011> Unable to drag & drop, copy & paste when logged in as root.
Modified Paths:
--------------
trunk/launchd/src/launchd_core_logic.c
trunk/launchd/src/libvproc.c
Modified: trunk/launchd/src/launchd_core_logic.c
===================================================================
--- trunk/launchd/src/launchd_core_logic.c 2007-01-05 00:11:52 UTC (rev 23004)
+++ trunk/launchd/src/launchd_core_logic.c 2007-01-05 01:14:23 UTC (rev 23005)
@@ -4195,6 +4195,13 @@
kern_return_t kr;
jobmgr_t jmr;
+ if (getuid() == 0) {
+ j = job_mig_intran2(root_jobmgr, target_subset);
+ job_assumes(j, launchd_mport_deallocate(target_subset) == KERN_SUCCESS);
+ strcpy(j->mgr->name, "Aqua");
+ return 0;
+ }
+
kr = _vproc_grab_subset(target_subset, &reqport,
&rcvright, &l2l_names, &l2l_name_cnt, &l2l_ports, &l2l_port_cnt);
Modified: trunk/launchd/src/libvproc.c
===================================================================
--- trunk/launchd/src/libvproc.c 2007-01-05 00:11:52 UTC (rev 23004)
+++ trunk/launchd/src/libvproc.c 2007-01-05 01:14:23 UTC (rev 23005)
@@ -29,6 +29,7 @@
#include <stdlib.h>
#include <stdio.h>
#include <errno.h>
+#include <unistd.h>
#include "liblaunch_public.h"
#include "liblaunch_private.h"
@@ -47,10 +48,15 @@
_vproc_move_subset_to_user(void)
{
kern_return_t kr = 1;
- mach_port_t puc;
+ mach_port_t puc = 0, which_port = bootstrap_port;
- if (vproc_mig_lookup_per_user_context(bootstrap_port, 0, &puc) == 0) {
- kr = vproc_mig_move_subset_to_user(puc, bootstrap_port);
+ if ((getuid() || geteuid()) && vproc_mig_lookup_per_user_context(bootstrap_port, 0, &puc) == 0) {
+ which_port = puc;
+ }
+
+ kr = vproc_mig_move_subset_to_user(which_port, bootstrap_port);
+
+ if (puc) {
mach_port_deallocate(mach_task_self(), puc);
}
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.macosforge.org/pipermail/launchd-changes/attachments/20070104/182d4499/attachment.html
More information about the launchd-changes
mailing list