[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