[launchd-changes] [23319] trunk/launchd/src
source_changes at macosforge.org
source_changes at macosforge.org
Fri Jul 27 10:59:56 PDT 2007
Revision: 23319
http://trac.macosforge.org/projects/launchd/changeset/23319
Author: zarzycki at apple.com
Date: 2007-07-27 10:59:56 -0700 (Fri, 27 Jul 2007)
Log Message:
-----------
<rdar://problem/5345685> kinit fails with Internal credentials cache error when run by root user over ssh
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-07-17 21:55:52 UTC (rev 23318)
+++ trunk/launchd/src/launchd_core_logic.c 2007-07-27 17:59:56 UTC (rev 23319)
@@ -5659,6 +5659,12 @@
kr = BOOTSTRAP_NOT_PRIVILEGED;
goto out;
}
+ } else if (ldc.uid == 0 && getpid() == 1 && strcmp(session_type, VPROCMGR_SESSION_STANDARDIO) == 0) {
+ ensure_root_bkgd_setup();
+
+ SLIST_REMOVE(&j->mgr->parentmgr->submgrs, j->mgr, jobmgr_s, sle);
+ j->mgr->parentmgr = background_jobmgr;
+ SLIST_INSERT_HEAD(&j->mgr->parentmgr->submgrs, j->mgr, sle);
}
jobmgr_log(j->mgr, LOG_DEBUG, "Renaming to: %s", session_type);
Modified: trunk/launchd/src/libvproc.c
===================================================================
--- trunk/launchd/src/libvproc.c 2007-07-17 21:55:52 UTC (rev 23318)
+++ trunk/launchd/src/libvproc.c 2007-07-27 17:59:56 UTC (rev 23319)
@@ -99,8 +99,7 @@
_vprocmgr_move_subset_to_user(uid_t target_user, const char *session_type)
{
launch_data_t output_obj;
- kern_return_t kr = 1;
- mach_port_t puc = 0, rootbs = get_root_bootstrap_port();
+ kern_return_t kr = 0;
bool is_bkgd = (strcmp(session_type, VPROCMGR_SESSION_BACKGROUND) == 0);
int64_t ldpid, lduid;
@@ -112,18 +111,6 @@
return (vproc_err_t)_vprocmgr_move_subset_to_user;
}
- if (target_user == 0) {
- if (ldpid == 1 && rootbs != bootstrap_port) {
- return _vprocmgr_init(session_type);
- }
-
- task_set_bootstrap_port(mach_task_self(), rootbs);
- mach_port_deallocate(mach_task_self(), bootstrap_port);
- bootstrap_port = rootbs;
-
- return NULL;
- }
-
if (ldpid != 1) {
if (lduid == getuid()) {
return NULL;
@@ -135,22 +122,23 @@
return (vproc_err_t)_vprocmgr_move_subset_to_user;
}
- if (vproc_mig_lookup_per_user_context(rootbs, target_user, &puc) != 0) {
- return (vproc_err_t)_vprocmgr_move_subset_to_user;
- }
+ if (is_bkgd || target_user) {
+ mach_port_t puc = 0, rootbs = get_root_bootstrap_port();
- if (is_bkgd) {
- kr = 0;
- } else {
- kr = vproc_mig_move_subset(puc, bootstrap_port, (char *)session_type);
- }
+ if (vproc_mig_lookup_per_user_context(rootbs, target_user, &puc) != 0) {
+ return (vproc_err_t)_vprocmgr_move_subset_to_user;
+ }
- if (is_bkgd) {
- task_set_bootstrap_port(mach_task_self(), puc);
- mach_port_deallocate(mach_task_self(), bootstrap_port);
- bootstrap_port = puc;
+ if (is_bkgd) {
+ task_set_bootstrap_port(mach_task_self(), puc);
+ mach_port_deallocate(mach_task_self(), bootstrap_port);
+ bootstrap_port = puc;
+ } else {
+ kr = vproc_mig_move_subset(puc, bootstrap_port, (char *)session_type);
+ mach_port_deallocate(mach_task_self(), puc);
+ }
} else {
- mach_port_deallocate(mach_task_self(), puc);
+ kr = _vprocmgr_init(session_type) ? 1 : 0;
}
cached_pid = -1;
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.macosforge.org/pipermail/launchd-changes/attachments/20070727/135c7247/attachment.html
More information about the launchd-changes
mailing list