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

source_changes at macosforge.org source_changes at macosforge.org
Fri Dec 21 13:06:38 PST 2007


Revision: 23474
          http://trac.macosforge.org/projects/launchd/changeset/23474
Author:   zarzycki at apple.com
Date:     2007-12-21 13:06:36 -0800 (Fri, 21 Dec 2007)

Log Message:
-----------
<rdar://problem/5652211> Bug: launchd_core_logic.c:6375 (23433):0: (target_j = jobmgr_find_by_pid(j->mgr, target_pid, true)) != NULL

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

Modified: trunk/launchd/src/launchd_core_logic.c
===================================================================
--- trunk/launchd/src/launchd_core_logic.c	2007-12-20 00:43:45 UTC (rev 23473)
+++ trunk/launchd/src/launchd_core_logic.c	2007-12-21 21:06:36 UTC (rev 23474)
@@ -405,9 +405,9 @@
 static void job_callback_read(job_t j, int ident);
 static void job_log_stray_pg(job_t j);
 static void job_log_chidren_without_exec(job_t j);
-static job_t job_new_anonymous(jobmgr_t jm, pid_t anonpid);
-static job_t job_new(jobmgr_t jm, const char *label, const char *prog, const char *const *argv);
-static job_t job_new_via_mach_init(job_t j, const char *cmd, uid_t uid, bool ond);
+static job_t job_new_anonymous(jobmgr_t jm, pid_t anonpid) __attribute__((malloc, nonnull, warn_unused_result));
+static job_t job_new(jobmgr_t jm, const char *label, const char *prog, const char *const *argv) __attribute__((malloc, nonnull(1,2), warn_unused_result));
+static job_t job_new_via_mach_init(job_t j, const char *cmd, uid_t uid, bool ond) __attribute__((malloc, nonnull, warn_unused_result));
 static const char *job_prog(job_t j);
 static jobmgr_t job_get_bs(job_t j);
 static void job_kill(job_t j);
@@ -1055,11 +1055,13 @@
 	gid_t kp_egid, kp_gid, kp_svgid;
 
 	if (!jobmgr_assumes(jm, anonpid != 0)) {
+		errno = EINVAL;
 		return NULL;
 	}
 	
 	if (!jobmgr_assumes(jm, anonpid < 100000)) {
 		/* The kernel current defines PID_MAX to be 99999, but that define isn't exported */
+		errno = EINVAL;
 		return NULL;
 	}
 
@@ -1074,6 +1076,7 @@
 	}
 
 	if (!jobmgr_assumes(jm, kp.kp_proc.p_comm[0] != '\0')) {
+		errno = EINVAL;
 		return NULL;
 	}
 
@@ -6502,6 +6505,15 @@
 		return BOOTSTRAP_NO_MEMORY;
 	}
 
+	target_j = jobmgr_find_by_pid(j->mgr, target_pid, true);
+
+	if (unlikely(target_j == NULL)) {
+		if (job_assumes(j, errno == ESRCH)) {
+			job_log(j, LOG_ERR, "Could not find PID %u while trying to set Mach bootstrap service policy: %s", target_pid, target_service);
+		}
+		return BOOTSTRAP_NO_MEMORY;
+	}
+
 	if (!job_assumes(j, (target_j = jobmgr_find_by_pid(j->mgr, target_pid, true)) != NULL)) {
 		return BOOTSTRAP_NO_MEMORY;
 	}

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


More information about the launchd-changes mailing list