File bug-262309_xcb-xauthlocalhostname.diff of Package libxcb

Index: src/xcb_auth.c
===================================================================
--- src/xcb_auth.c.orig
+++ src/xcb_auth.c
@@ -118,6 +118,7 @@ static Xauth *get_authptr(struct sockadd
     char hostnamebuf[256];   /* big enough for max hostname */
     char dispbuf[40];   /* big enough to hold more than 2^64 base 10 */
     int dispbuflen;
+    Xauth *authptr = NULL;
 
     family = FamilyLocal; /* 256 */
     switch(sockname->sa_family)
@@ -162,10 +163,20 @@ static Xauth *get_authptr(struct sockadd
         addrlen = strlen(addr);
     }
 
-    return XauGetBestAuthByAddr (family,
+    authptr = XauGetBestAuthByAddr (family,
                                  (unsigned short) addrlen, addr,
                                  (unsigned short) dispbuflen, dispbuf,
                                  N_AUTH_PROTOS, (char **)authnames, authnameslen);
+    // && !phostname
+    if ((!authptr || !authptr->data_length) && family == FamilyLocal) {
+        if ( (addr = getenv("XAUTHLOCALHOSTNAME")) ) {
+            authptr = XauGetBestAuthByAddr (family,
+                                           (unsigned short) strlen(addr), addr,
+                                           (unsigned short) dispbuflen, dispbuf,
+                                           N_AUTH_PROTOS, (char **) authnames, authnameslen);
+        }
+    }
+    return authptr;
 }
 
 #ifdef HASXDMAUTH
openSUSE Build Service is sponsored by