X-Git-Url: https://git.saurik.com/apple/launchd.git/blobdiff_plain/f271391cf54cba14d21d45675781491323ebe16d..f70a210cfaa6d15038f6941e4e82cc003425decd:/launchd/src/launchd_core_logic.c diff --git a/launchd/src/launchd_core_logic.c b/launchd/src/launchd_core_logic.c index 9d23527..6daf059 100644 --- a/launchd/src/launchd_core_logic.c +++ b/launchd/src/launchd_core_logic.c @@ -16,7 +16,7 @@ * @APPLE_APACHE_LICENSE_HEADER_END@ */ -static const char *const __rcs_file_version__ = "$Revision: 24108 $"; +static const char *const __rcs_file_version__ = "$Revision: 24498 $"; #include "config.h" #include "launchd_core_logic.h" @@ -2785,7 +2785,8 @@ job_reap(job_t j) LIST_REMOVE(spi, sle); free(spi); } - + + j->last_exit_status = status; struct waiting_for_exit *w4e = NULL; while( (w4e = LIST_FIRST(&j->exit_watchers)) ) { waiting4exit_delete(j, w4e); @@ -2810,7 +2811,6 @@ job_reap(job_t j) } else if (!j->anonymous && !j->hopefully_exits_last) { j->mgr->normal_active_cnt--; } - j->last_exit_status = status; j->sent_signal_time = 0; j->sent_sigkill = false; j->clean_kill = false; @@ -8292,6 +8292,12 @@ job_mig_init_session(job_t j, name_t session_type, mach_port_t audit_session) kern_return_t job_mig_switch_to_session(job_t j, mach_port_t requestor_port, name_t session_name, mach_port_t audit_session, mach_port_t *new_bsport) { + struct ldcred *ldc = runtime_get_caller_creds(); + if (!jobmgr_assumes(root_jobmgr, j != NULL)) { + jobmgr_log(root_jobmgr, LOG_ERR, "%s() called with NULL job: PID %d", __func__, ldc->pid); + return BOOTSTRAP_NO_MEMORY; + } + job_log(j, LOG_DEBUG, "Job wants to move to %s session.", session_name); if( !job_assumes(j, pid1_magic == false) ) {