summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Anholt <eric@anholt.net>2007-07-13 15:34:43 -0700
committerEric Anholt <eric@anholt.net>2007-07-13 15:34:43 -0700
commitfc6cc81be41af58ffd996994e1325dd072a9ab34 (patch)
tree6c8937f0026aa6adef867d5f8775a4405bed9e93
parente9c1d1667b58c738cb1317219cc0ac84bef2a5d6 (diff)
Use /dev/random to generate the cookie if mcookie is unavailable.
Setting XAUTHORITY without having actually generated a cookie and created .Xauthority led to issues if somebody like ssh later came around and made the .Xauthority file for their own setup. So, simply make it so that we never fail to create one.
-rw-r--r--startx.cpp11
1 files changed, 8 insertions, 3 deletions
diff --git a/startx.cpp b/startx.cpp
index eba83b8..f4e24fd 100644
--- a/startx.cpp
+++ b/startx.cpp
@@ -170,7 +170,6 @@ fi
removelist=
-#if defined(HAS_COOKIE_MAKER) && defined(MK_COOKIE)
XCOMM set up default Xauth info for this machine
case `uname` in
Linux*)
@@ -186,7 +185,15 @@ Linux*)
esac
authdisplay=${display:-:0}
+#if defined(HAS_COOKIE_MAKER) && defined(MK_COOKIE)
mcookie=`MK_COOKIE`
+#else
+mcookie=`dd if=/dev/random bs=16 count=1 2>/dev/null | hexdump -e \\"%08x\\"`
+if x"$mcookie" = x; then
+ echo "Couldn't create cookie"
+ exit 1
+fi
+#endif
dummy=0
XCOMM create a file with auth information for the server. ':0' is a dummy.
@@ -215,8 +222,6 @@ EOF
fi
done
-#endif
-
#if defined(__SCO__) || defined(__UNIXWARE__)
if [ "$REMOTE_SERVER" = "TRUE" ]; then
exec SHELL_CMD ${client}