summaryrefslogtreecommitdiffstats
path: root/x11/xinit/files/patch-startx.cpp
blob: 8da9ac250d83e48e27f06db71d8d8071ce187e8d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
commit fc6cc81be41af58ffd996994e1325dd072a9ab34
Author: Eric Anholt <eric@anholt.net>
Date:   Fri Jul 13 15:34:43 2007 -0700

    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.

diff --git a/startx.cpp b/startx.cpp
index eba83b8..f4e24fd 100644
--- startx.cpp
+++ 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}
OpenPOWER on IntegriCloud