]> git.saurik.com Git - apple/launchd.git/blobdiff - launchd/src/launchd_core_logic.c
launchd-329.3.3.tar.gz
[apple/launchd.git] / launchd / src / launchd_core_logic.c
index 9d2352789e66dc0aa443a8ef1737bda0fa702e07..6daf059fe47d49ab5ab4c2f6215bbbb44112c8a1 100644 (file)
@@ -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) ) {