Package: xauth
Version: 1:1.0.10-1
Architecture: arm64

Running 'startx' on a machine named 'myhost' (aarch64), with a sub-directory 
named 'myhost' in my home directory:  X starts very slowly, and I see the 
message:

        xauth:  timeout in locking authority file /home/john/.Xauthority

Here's what happens: the 'startx' script calls 'xauth list' in a loop (line 
199) and the first call crashes after receiving SIG_SEGV; this leaves its lock 
files in place, and the next instance of xauth times out waiting for them to go 
away.

I think I've traced the reason for 'xauth list' crashing: my .Xauthority file 
contains a line like this:

        myhost:0 MIT-MAGIC-COOKIE-1 <some value>

and while processing this for printing, there's some code in parsedpy.c (line 
178) that does this:

        if (0 == stat(path, &sbuf))
                family = FamilyLocal;

and this test succeeds because 'myhost' is the name of a valid file (actually a 
directory)

Then later on in gethost.c we have:

        switch (family) {
                case FamilyLocal: /* hostname/unix:0 */
                        ...
                        if (0 == stat(path, &sbuf))
                                is_path_to_socket = 1;
                        ...
                        if (is_path_to_socket)
                                strncpy(buf, strrchr(fulldpyname, '/') + 1, 
sizeof(buf));

But there is no '/' in the name, so we end up passing a null pointer to 
strncpy(), which crashes the whole program.

Reply via email to