[launchd-changes] [23355] trunk/launchd/src/StartupItems.c

source_changes at macosforge.org source_changes at macosforge.org
Wed Sep 5 08:04:36 PDT 2007


Revision: 23355
          http://trac.macosforge.org/projects/launchd/changeset/23355
Author:   zarzycki at apple.com
Date:     2007-09-05 08:04:36 -0700 (Wed, 05 Sep 2007)

Log Message:
-----------
<rdar://problem/5409386> Mac Pro SMC firmware update 1.1 does not begin after restart

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

Modified: trunk/launchd/src/StartupItems.c
===================================================================
--- trunk/launchd/src/StartupItems.c	2007-09-04 23:33:25 UTC (rev 23354)
+++ trunk/launchd/src/StartupItems.c	2007-09-05 15:04:36 UTC (rev 23355)
@@ -26,6 +26,7 @@
 #include <unistd.h>
 #include <sys/types.h>
 #include <sys/stat.h>
+#include <sys/sysctl.h>
 #include <sys/mman.h>
 #include <stdlib.h>
 #include <fcntl.h>
@@ -217,15 +218,31 @@
 
 static bool StartupItemSecurityCheck(const char *aPath)
 {
+	static struct timeval boot_time;
 	struct stat aStatBuf;
 	bool r = true;
 
+	if (boot_time.tv_sec == 0) {
+		int mib[] = { CTL_KERN, KERN_BOOTTIME };
+		size_t boot_time_sz = sizeof(boot_time);
+		int rv;
+
+		rv = sysctl(mib, sizeof(mib) / sizeof(mib[0]), &boot_time, &boot_time_sz, NULL, 0);
+
+		assert(rv != -1);
+		assert(boot_time_sz == sizeof(boot_time));
+	}
+
 	/* should use lstatx_np() on Tiger? */
 	if (lstat(aPath, &aStatBuf) == -1) {
 		if (errno != ENOENT)
 			syslog(LOG_ERR, "lstat(\"%s\"): %m", aPath);
 		return false;
 	}
+	if (aStatBuf.st_ctimespec.tv_sec > boot_time.tv_sec) {
+		syslog(LOG_WARNING, "\"%s\" failed sanity check: path was created after boot up", aPath);
+		return false;
+	}
 	if (!(S_ISREG(aStatBuf.st_mode) || S_ISDIR(aStatBuf.st_mode))) {
 		syslog(LOG_WARNING, "\"%s\" failed security check: not a directory or regular file", aPath);
 		r = false;

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.macosforge.org/pipermail/launchd-changes/attachments/20070905/9127020b/attachment.html


More information about the launchd-changes mailing list