[launchd-changes] [23131] trunk/launchd/src

source_changes at macosforge.org source_changes at macosforge.org
Sun Mar 4 15:59:53 PST 2007


Revision: 23131
          http://trac.macosforge.org/projects/launchd/changeset/23131
Author:   zarzycki at apple.com
Date:     2007-03-04 15:59:52 -0800 (Sun, 04 Mar 2007)

Log Message:
-----------
<rdar://problem/4421331> Per session launchd deployment for CLI / PAM sessions

Modified Paths:
--------------
    trunk/launchd/src/liblaunch.c
    trunk/launchd/src/libvproc.c
    trunk/launchd/src/libvproc_internal.h
    trunk/launchd/src/libvproc_private.h

Modified: trunk/launchd/src/liblaunch.c
===================================================================
--- trunk/launchd/src/liblaunch.c	2007-03-04 23:38:21 UTC (rev 23130)
+++ trunk/launchd/src/liblaunch.c	2007-03-04 23:59:52 UTC (rev 23131)
@@ -40,6 +40,7 @@
 
 #include "libbootstrap_public.h"
 #include "libvproc_public.h"
+#include "libvproc_private.h"
 #include "libvproc_internal.h"
 
 /* __OSBogusByteSwap__() must not really exist in the symbol namespace
@@ -1163,7 +1164,7 @@
 void
 load_launchd_jobs_at_loginwindow_prompt(int flags __attribute__((unused)), ...)
 {
-	_vproc_move_subset_to_user("LoginWindow");
+	_vprocmgr_move_subset_to_user(geteuid() ? geteuid() : getuid(), "LoginWindow");
 }
 
 pid_t
@@ -1171,8 +1172,9 @@
 {
 	mach_port_t bezel_ui_server;
 	struct stat sb;
+	uid_t target_user = geteuid() ? geteuid() : getuid();
 
-	if (_vproc_move_subset_to_user("Aqua")) {
+	if (_vprocmgr_move_subset_to_user(target_user, "Aqua")) {
 		return -1;
 	}
 
@@ -1181,7 +1183,7 @@
 #define BEZEL_UI_SERVICE "BezelUI"
 
 	if (!(stat(BEZEL_UI_PLIST, &sb) == 0 && S_ISREG(sb.st_mode))) {
-		if (bootstrap_create_server(bootstrap_port, BEZEL_UI_PATH, 0, true, &bezel_ui_server) == BOOTSTRAP_SUCCESS) {
+		if (bootstrap_create_server(bootstrap_port, BEZEL_UI_PATH, target_user, true, &bezel_ui_server) == BOOTSTRAP_SUCCESS) {
 			mach_port_t srv;
 
 			if (bootstrap_create_service(bezel_ui_server, BEZEL_UI_SERVICE, &srv) == BOOTSTRAP_SUCCESS) {

Modified: trunk/launchd/src/libvproc.c
===================================================================
--- trunk/launchd/src/libvproc.c	2007-03-04 23:38:21 UTC (rev 23130)
+++ trunk/launchd/src/libvproc.c	2007-03-04 23:59:52 UTC (rev 23131)
@@ -47,12 +47,12 @@
 }
 
 vproc_err_t
-_vproc_move_subset_to_user(char *session_type)
+_vprocmgr_move_subset_to_user(uid_t target_user, char *session_type)
 {
 	kern_return_t kr = 1;
 	mach_port_t puc = 0, which_port = bootstrap_port;
 
-	if ((getuid() || geteuid()) && vproc_mig_lookup_per_user_context(bootstrap_port, 0, &puc) == 0) {
+	if (target_user && vproc_mig_lookup_per_user_context(bootstrap_port, target_user, &puc) == 0) {
 		which_port = puc;
 	}
 
@@ -62,7 +62,7 @@
 		mach_port_deallocate(mach_task_self(), puc);
 	}
 
-	return kr == 0 ? NULL : (vproc_err_t)_vproc_move_subset_to_user;
+	return kr == 0 ? NULL : (vproc_err_t)_vprocmgr_move_subset_to_user;
 }
 
 

Modified: trunk/launchd/src/libvproc_internal.h
===================================================================
--- trunk/launchd/src/libvproc_internal.h	2007-03-04 23:38:21 UTC (rev 23130)
+++ trunk/launchd/src/libvproc_internal.h	2007-03-04 23:59:52 UTC (rev 23131)
@@ -57,8 +57,6 @@
 
 kern_return_t _vprocmgr_getsocket(name_t);
 
-vproc_err_t _vproc_move_subset_to_user(char *session_type);
-
 void _vproc_logv(int pri, int err, const char *msg, va_list ap);
 
 kern_return_t

Modified: trunk/launchd/src/libvproc_private.h
===================================================================
--- trunk/launchd/src/libvproc_private.h	2007-03-04 23:38:21 UTC (rev 23130)
+++ trunk/launchd/src/libvproc_private.h	2007-03-04 23:59:52 UTC (rev 23131)
@@ -20,6 +20,7 @@
  * @APPLE_APACHE_LICENSE_HEADER_END@
  */
 
+#include <sys/types.h>
 #include <sys/cdefs.h>
 #include <sys/syslog.h>
 #include <stdbool.h>
@@ -34,6 +35,8 @@
 void _vproc_log(int pri, const char *msg, ...) __attribute__((format(printf, 2, 3)));
 void _vproc_log_error(int pri, const char *msg, ...) __attribute__((format(printf, 2, 3)));
 
+vproc_err_t _vprocmgr_move_subset_to_user(uid_t target_user, char *session_type);
+
 #pragma GCC visibility pop
 
 __END_DECLS

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


More information about the launchd-changes mailing list