[launchd-changes] [22934] trunk/launchd/src
source_changes at macosforge.org
source_changes at macosforge.org
Fri Nov 3 11:16:05 PST 2006
Revision: 22934
http://trac.macosforge.org/projects/launchd/changeset/22934
Author: zarzycki at apple.com
Date: 2006-11-03 11:16:05 -0800 (Fri, 03 Nov 2006)
Log Message:
-----------
<rdar://problem/4446357> sudo launchctl doesn't work as expected
Modified Paths:
--------------
trunk/launchd/src/launchd_unix_ipc.c
trunk/launchd/src/liblaunch.c
Modified: trunk/launchd/src/launchd_unix_ipc.c
===================================================================
--- trunk/launchd/src/launchd_unix_ipc.c 2006-11-03 18:07:24 UTC (rev 22933)
+++ trunk/launchd/src/launchd_unix_ipc.c 2006-11-03 19:16:05 UTC (rev 22934)
@@ -134,7 +134,6 @@
goto out_bad;
}
snprintf(sun.sun_path, sizeof(sun.sun_path), "%s/sock", ourdir);
- setenv(LAUNCHD_SOCKET_ENV, sun.sun_path, 1);
}
if (unlink(sun.sun_path) == -1 && errno != ENOENT) {
Modified: trunk/launchd/src/liblaunch.c
===================================================================
--- trunk/launchd/src/liblaunch.c 2006-11-03 18:07:24 UTC (rev 22933)
+++ trunk/launchd/src/liblaunch.c 2006-11-03 19:16:05 UTC (rev 22934)
@@ -160,6 +160,7 @@
char *where = getenv(LAUNCHD_SOCKET_ENV);
char *_launchd_fd = getenv(LAUNCHD_TRUSTED_FD_ENV);
int dfd, lfd = -1;
+ name_t spath;
_lc = calloc(1, sizeof(struct _launch_client));
@@ -184,10 +185,14 @@
if (where && where[0] != '\0') {
strncpy(sun.sun_path, where, sizeof(sun.sun_path));
- } else if (getuid() == 0) {
+ } else if (!getenv("SUDO_COMMAND") && _vprocmgr_getsocket(spath) == 0) {
+ size_t min_len;
+
+ min_len = sizeof(sun.sun_path) < sizeof(spath) ? sizeof(sun.sun_path) : sizeof(spath);
+
+ strncpy(sun.sun_path, spath, min_len);
+ } else {
strncpy(sun.sun_path, LAUNCHD_SOCK_PREFIX "/sock", sizeof(sun.sun_path));
- } else {
- goto out_bad;
}
if ((lfd = _fd(socket(AF_UNIX, SOCK_STREAM, 0))) == -1)
@@ -1208,8 +1213,6 @@
usleep(20000);
}
- setenv(LAUNCHD_SOCKET_ENV, sp, 1);
-
if (flags & LOAD_ONLY_SAFEMODE_LAUNCHAGENTS) {
largv[5] = "system";
}
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.macosforge.org/pipermail/launchd-changes/attachments/20061103/4897ee1e/attachment.html
More information about the launchd-changes
mailing list