[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