[launchd-changes] [23601] trunk/launchd/src
source_changes at macosforge.org
source_changes at macosforge.org
Mon Apr 21 13:33:30 PDT 2008
Revision: 23601
http://trac.macosforge.org/projects/launchd/changeset/23601
Author: zarzycki at apple.com
Date: 2008-04-21 13:33:29 -0700 (Mon, 21 Apr 2008)
Log Message:
-----------
<rdar://problem/5856435> Make bootstrap_create_server() be per-user launchd aware
Modified Paths:
--------------
trunk/launchd/src/launchd_core_logic.c
trunk/launchd/src/libbootstrap.c
Modified: trunk/launchd/src/launchd_core_logic.c
===================================================================
--- trunk/launchd/src/launchd_core_logic.c 2008-04-18 21:41:05 UTC (rev 23600)
+++ trunk/launchd/src/launchd_core_logic.c 2008-04-21 20:33:29 UTC (rev 23601)
@@ -5650,18 +5650,12 @@
job_log(j, LOG_DEBUG, "Server create attempt: %s", server_cmd);
-#define LET_MERE_MORTALS_ADD_SERVERS_TO_PID1
- /* XXX - This code should go away once the per session launchd is integrated with the rest of the system */
-#ifdef LET_MERE_MORTALS_ADD_SERVERS_TO_PID1
if (pid1_magic) {
- if (unlikely(ldc->euid && server_uid && (ldc->euid != server_uid))) {
- job_log(j, LOG_WARNING, "Server create: \"%s\": Will run as UID %d, not UID %d as they told us to",
- server_cmd, ldc->euid, server_uid);
- server_uid = ldc->euid;
+ if (ldc->euid || ldc->uid) {
+ job_log(j, LOG_WARNING, "Server create attempt moved to per-user launchd: %s", server_cmd);
+ return VPROC_ERR_TRY_PER_USER;
}
- } else
-#endif
- if (getuid()) {
+ } else {
if (unlikely(server_uid != getuid())) {
job_log(j, LOG_WARNING, "Server create: \"%s\": As UID %d, we will not be able to switch to UID %d",
server_cmd, getuid(), server_uid);
Modified: trunk/launchd/src/libbootstrap.c
===================================================================
--- trunk/launchd/src/libbootstrap.c 2008-04-18 21:41:05 UTC (rev 23600)
+++ trunk/launchd/src/libbootstrap.c 2008-04-21 20:33:29 UTC (rev 23601)
@@ -37,7 +37,20 @@
kern_return_t
bootstrap_create_server(mach_port_t bp, cmd_t server_cmd, uid_t server_uid, boolean_t on_demand, mach_port_t *server_port)
{
- return vproc_mig_create_server(bp, server_cmd, server_uid, on_demand, server_port);
+ kern_return_t kr;
+
+ kr = vproc_mig_create_server(bp, server_cmd, server_uid, on_demand, server_port);
+
+ if (kr == VPROC_ERR_TRY_PER_USER) {
+ mach_port_t puc;
+
+ if (vproc_mig_lookup_per_user_context(bp, 0, &puc) == 0) {
+ kr = vproc_mig_create_server(puc, server_cmd, server_uid, on_demand, server_port);
+ mach_port_deallocate(mach_task_self(), puc);
+ }
+ }
+
+ return kr;
}
kern_return_t
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.macosforge.org/pipermail/launchd-changes/attachments/20080421/17f09dff/attachment.html
More information about the launchd-changes
mailing list