summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthieu Herrb <matthieu.herrb@laas.fr>2012-04-28 19:37:50 +0200
committerMatthieu Herrb <matthieu.herrb@laas.fr>2012-04-28 19:37:50 +0200
commitc0fc8ecd6fa16a0190a1cad7eb3e3f6024655952 (patch)
tree8996b262be9b548a793697064f7fa2e83c04ae25
parentd748d7c8e4c12baf54c995ed0eb7afea33c7ffa8 (diff)
parenteda973a32552c916e7e7cce8877674106cbda0cb (diff)
Merge remote-tracking branch 'origin/master' into obsd
-rw-r--r--launchd/Makefile.am7
-rwxr-xr-xlaunchd/privileged_startx/10-tmpdirs.cpp2
-rw-r--r--launchd/privileged_startx/privileged_startx.plist.cpp4
-rw-r--r--launchd/privileged_startx/server.c14
-rw-r--r--launchd/user_startx/launchd_startx.c23
5 files changed, 24 insertions, 26 deletions
diff --git a/launchd/Makefile.am b/launchd/Makefile.am
index f8781ed..0135b7f 100644
--- a/launchd/Makefile.am
+++ b/launchd/Makefile.am
@@ -1,3 +1,8 @@
-SUBDIRS = privileged_startx user_startx
+DIST_SUBDIRS = privileged_startx user_startx
+SUBDIRS = privileged_startx
+
+if !TIGER_LAUNCHD
+SUBDIRS += user_startx
+endif
EXTRA_DIST = console_redirect.h
diff --git a/launchd/privileged_startx/10-tmpdirs.cpp b/launchd/privileged_startx/10-tmpdirs.cpp
index f48033d..7786426 100755
--- a/launchd/privileged_startx/10-tmpdirs.cpp
+++ b/launchd/privileged_startx/10-tmpdirs.cpp
@@ -46,7 +46,7 @@ for dir in /tmp/.ICE-unix /tmp/.X11-unix /tmp/.font-unix ; do
success=1
break
else
- saved=$(${MKTEMP} -d /tmp/${dir}-XXXXXXXX)
+ saved=$(${MKTEMP} -d ${dir}-XXXXXXXX)
mv ${dir} ${saved}
echo "${dir} exists but is insecure. It has been moved into ${saved}"
fi
diff --git a/launchd/privileged_startx/privileged_startx.plist.cpp b/launchd/privileged_startx/privileged_startx.plist.cpp
index 533fc32..e23e892 100644
--- a/launchd/privileged_startx/privileged_startx.plist.cpp
+++ b/launchd/privileged_startx/privileged_startx.plist.cpp
@@ -11,8 +11,12 @@
<string>SCRIPTDIR</string>
</array>
#ifdef TIGER_LAUNCHD
+ <key>RunAtLoad</key>
+ <true/>
<key>KeepAlive</key>
<true/>
+ <key>ServiceIPC</key>
+ <true/>
#else
<key>MachServices</key>
<dict>
diff --git a/launchd/privileged_startx/server.c b/launchd/privileged_startx/server.c
index cfbb623..a93cae3 100644
--- a/launchd/privileged_startx/server.c
+++ b/launchd/privileged_startx/server.c
@@ -125,9 +125,19 @@ int server_main(const char *dir) {
aslclient aslc;
checkin = launch_data_new_string(LAUNCH_KEY_CHECKIN);
+ if (!checkin) {
+ asl_log(NULL, NULL, ASL_LEVEL_ERR, "unable to create launchd checkin string");
+ exit(EXIT_FAILURE);
+ }
+
config = launch_msg(checkin);
- if (!config || launch_data_get_type(config) == LAUNCH_DATA_ERRNO) {
- asl_log(NULL, NULL, ASL_LEVEL_ERR, "launchd checkin failed");
+ if (!config) {
+ asl_log(NULL, NULL, ASL_LEVEL_ERR, "could not send a message to launchd");
+ exit(EXIT_FAILURE);
+ }
+
+ if (launch_data_get_type(config) == LAUNCH_DATA_ERRNO) {
+ asl_log(NULL, NULL, ASL_LEVEL_ERR, "launchd checkin failed eith error: %d %s", launch_data_get_errno(config), strerror(launch_data_get_errno(config)));
exit(EXIT_FAILURE);
}
diff --git a/launchd/user_startx/launchd_startx.c b/launchd/user_startx/launchd_startx.c
index f83cd61..67419a4 100644
--- a/launchd/user_startx/launchd_startx.c
+++ b/launchd/user_startx/launchd_startx.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2011 Apple Inc.
+/* Copyright (c) 2011-2012 Apple Inc.
*
* Permission is hereby granted, free of charge, to any person
* obtaining a copy of this software and associated documentation files
@@ -37,15 +37,7 @@
#include <sys/wait.h>
#include <string.h>
#include <stdlib.h>
-
-/* Using MIN_REQUIRED instead of MAX_ALLOWED logic due to posix_spawn not
- * being marked with availability macros until 10.7
- */
-#if MAC_OS_X_VERSION_MIN_REQUIRED >= 1050
#include <spawn.h>
-#else
-#include <errno.h>
-#endif
#include "console_redirect.h"
@@ -64,20 +56,7 @@ int main(int argc, char **argv, char **envp) {
xi_asl_capture_fd(aslc, NULL, ASL_LEVEL_INFO, STDOUT_FILENO);
xi_asl_capture_fd(aslc, NULL, ASL_LEVEL_NOTICE, STDERR_FILENO);
-#if MAC_OS_X_VERSION_MIN_REQUIRED >= 1050
assert(posix_spawnp(&child, argv[1], NULL, NULL, &argv[1], envp) == 0);
-#else
- switch(child = fork()) {
- case -1:
- perror("fork");
- return errno;
- case 0:
- return execvp(argv[1], &argv[1]);
- default:
- break;
- }
-#endif
-
wait4(child, &pstat, 0, (struct rusage *)0);
return pstat;