[Xcb-commit] src

Julien Danjou jdanjou at kemper.freedesktop.org
Mon Apr 6 07:54:40 PDT 2009


 src/xcb_auth.c |    9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

New commits:
commit 6e2e87d0bbdff87f127986a0666445160d52e6a5
Author: Samuel Thibault <samuel.thibault at ens-lyon.org>
Date:   Mon Apr 6 03:31:23 2009 +0200

    Local socket connections do not work on hurd-i386
    
    Local socket connections currently do not work on hurd-i386 because
    xcb_auth calls getpeername() on the client socket, but hurd-i386 does
    not implement anything in that case (I actually wonder what reasonable
    value could be returned).  In such case the xcb code does not actually
    need the peer name anyway.
    
    Signed-off-by: Julien Danjou <julien at danjou.info>

diff --git a/src/xcb_auth.c b/src/xcb_auth.c
index 58dfe3a..93a6f68 100644
--- a/src/xcb_auth.c
+++ b/src/xcb_auth.c
@@ -243,7 +243,14 @@ int _xcb_get_auth_info(int fd, xcb_auth_info_t *info, int display)
     int ret = 1;
 
     if (getpeername(fd, sockname, &socknamelen) == -1)
-        return 0;  /* can only authenticate sockets */
+    {
+        if (getsockname(fd, sockname, &socknamelen) == -1)
+            return 0;  /* can only authenticate sockets */
+        if (sockname->sa_family != AF_UNIX)
+            return 0;
+        /* Some systems like hpux or Hurd do not expose peer names
+         * for UNIX Domain Sockets.  We do not need it anyway.  */
+    }
 
     authptr = get_authptr(sockname, socknamelen, display);
     if (authptr == 0)


More information about the xcb-commit mailing list