[launchd-changes] [22941] trunk/launchd/src/launchd_core_logic.c

source_changes at macosforge.org source_changes at macosforge.org
Mon Nov 13 09:53:17 PST 2006


Revision: 22941
          http://trac.macosforge.org/projects/launchd/changeset/22941
Author:   zarzycki at apple.com
Date:     2006-11-13 09:53:16 -0800 (Mon, 13 Nov 2006)

Log Message:
-----------
<rdar://problem/4829691> Applications 'open'ed in 'ssh' session belong to 'root'

Modified Paths:
--------------
    trunk/launchd/src/launchd_core_logic.c

Modified: trunk/launchd/src/launchd_core_logic.c
===================================================================
--- trunk/launchd/src/launchd_core_logic.c	2006-11-09 22:10:17 UTC (rev 22940)
+++ trunk/launchd/src/launchd_core_logic.c	2006-11-13 17:53:16 UTC (rev 22941)
@@ -441,6 +441,10 @@
 		launch_data_dict_insert(r, tmp, LAUNCH_JOBKEY_PROGRAMARGUMENTS);
 	}
 
+	if (j->session_create && (tmp = launch_data_new_bool(true))) {
+		launch_data_dict_insert(r, tmp, LAUNCH_JOBKEY_SESSIONCREATE);
+	}
+
 	if (j->inetcompat && (tmp = launch_data_alloc(LAUNCH_DATA_DICTIONARY))) {
 		if ((tmp2 = launch_data_new_bool(j->inetcompat_wait))) {
 			launch_data_dict_insert(tmp, tmp2, LAUNCH_JOBINETDCOMPATIBILITY_WAIT);
@@ -781,6 +785,13 @@
 		return NULL;
 	}
 
+	if (getpid() == 1) {
+		struct ldcred ldc;
+
+		runtime_get_caller_creds(&ldc);
+		jr->mach_uid = ldc.uid;
+	}
+
 	jr->unload_at_exit = true;
 	jr->stall_before_exec = w4d;
 	jr->force_ppc = fppc;
@@ -4084,7 +4095,6 @@
 		pid_t *child_pid, mach_port_t *obsvr_port)
 {
 	job_t jr;
-	struct ldcred ldc;
 	size_t offset = 0;
 	char *tmpp;
 	const char **argv = NULL, **env = NULL;
@@ -4093,8 +4103,6 @@
 	const char *workingdir = NULL;
 	size_t argv_i = 0, env_i = 0;
 
-	runtime_get_caller_creds(&ldc);
-
 #if 0
 	if (ldc.asid != inherited_asid) {
 		job_log(j, LOG_ERR, "Security: PID %d (ASID %d) was denied a request to spawn a process in this session (ASID %d)",
@@ -4143,10 +4151,6 @@
 		return BOOTSTRAP_NO_MEMORY;
 	}
 
-	if (getuid() == 0) {
-		jr->mach_uid = ldc.uid;
-	}
-
 	if (!job_setup_machport(jr)) {
 		job_remove(jr);
 		return BOOTSTRAP_NO_MEMORY;

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.macosforge.org/pipermail/launchd-changes/attachments/20061113/d8a6a477/attachment.html


More information about the launchd-changes mailing list