Fix authentication on hpux and Hurd
authorSamuel Thibault <samuel.thibault@ens-lyon.org>
Fri, 12 Mar 2010 22:51:32 +0000 (23:51 +0100)
committerJulien Danjou <julien@danjou.info>
Sat, 13 Mar 2010 15:20:12 +0000 (16:20 +0100)
libxcb's 010e5661 (Fix XDM-AUTHORIZATION-1 (bug #14202)) mistakenly
inverted a few lines of code, making local socket authentication fail on
hpux and Hurd: when getpeername fails, sockname needs to be initialized
by getsockname before its address family can be checked.

Signed-off-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
Signed-off-by: Julien Danjou <julien@danjou.info>
src/xcb_auth.c

index 104f2f0..00aad23 100644 (file)
@@ -260,10 +260,10 @@ int _xcb_get_auth_info(int fd, xcb_auth_info_t *info, int display)
      * case anyway.*/
     if (getpeername(fd, sockname, &socknamelen) == -1)
     {
-        if (sockname->sa_family != AF_UNIX)
-            return 0;   /* except for AF_UNIX, sockets should have peernames */
         if (getsockname(fd, sockname, &socknamelen) == -1)
             return 0;   /* can only authenticate sockets */
+        if (sockname->sa_family != AF_UNIX)
+            return 0;   /* except for AF_UNIX, sockets should have peernames */
         gotsockname = 1;
     }