[launchd-changes] [23583] trunk/launchd/src/StartupItems.c
source_changes at macosforge.org
source_changes at macosforge.org
Wed Apr 2 10:31:17 PDT 2008
Revision: 23583
http://trac.macosforge.org/projects/launchd/changeset/23583
Author: zarzycki at apple.com
Date: 2008-04-02 10:31:16 -0700 (Wed, 02 Apr 2008)
Log Message:
-----------
<rdar://problem/5835665> 10A41: SystemStarter crashes when FORTIFY is enabled
Modified Paths:
--------------
trunk/launchd/src/StartupItems.c
Modified: trunk/launchd/src/StartupItems.c
===================================================================
--- trunk/launchd/src/StartupItems.c 2008-04-02 16:43:05 UTC (rev 23582)
+++ trunk/launchd/src/StartupItems.c 2008-04-02 17:31:16 UTC (rev 23583)
@@ -286,7 +286,7 @@
while ((aState = NSGetNextSearchPathEnumeration(aState, aPath))) {
DIR *aDirectory;
- strcpy(aPath + strlen(aPath), kStartupItemsPath);
+ strlcat(aPath, kStartupItemsPath, sizeof(aPath));
++aDomainIndex;
/* 5485016
@@ -923,29 +923,18 @@
anError = 0;
} else {
CFStringRef aBundlePathString = CFDictionaryGetValue(anItem, kBundlePathKey);
- size_t aBundlePathCLength =
- CFStringGetMaximumSizeForEncoding(CFStringGetLength(aBundlePathString), kCFStringEncodingUTF8) + 1;
- char *aBundlePath = (char *)malloc(aBundlePathCLength);
- char anExecutable[PATH_MAX] = "";
+ char aBundlePath[PATH_MAX];
+ char anExecutable[PATH_MAX];
+ char *tmp;
- if (!aBundlePath) {
- syslog(LOG_EMERG, "malloc() failed; out of memory while running item %s", aBundlePathString);
- return (anError);
- }
- if (!CFStringGetCString(aBundlePathString, aBundlePath, aBundlePathCLength, kCFStringEncodingUTF8)) {
+ if (!CFStringGetCString(aBundlePathString, aBundlePath, sizeof(aBundlePath), kCFStringEncodingUTF8)) {
CF_syslog(LOG_EMERG, CFSTR("Internal error while running item %@"), aBundlePathString);
return (anError);
}
/* Compute path to excecutable */
- {
- char *tmp;
- strncpy(anExecutable, aBundlePath, sizeof(anExecutable)); /* .../foo */
- tmp = rindex(anExecutable, '/'); /* /foo */
- strncat(anExecutable, tmp, strlen(tmp)); /* .../foo/foo */
- }
+ tmp = rindex(aBundlePath, '/');
+ snprintf(anExecutable, sizeof(anExecutable), "%s%s", aBundlePath, tmp);
- free(aBundlePath);
-
/**
* Run the bundle
**/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.macosforge.org/pipermail/launchd-changes/attachments/20080402/763bd6b7/attachment.html
More information about the launchd-changes
mailing list