Xlib (xcb) uses XauGetBestAuthByAddr() when looking for an
authorization. 'xauth [n]list $DISPLAY' used a slightly
stricter algorithm which doesn't find a possible authorization
for cases where either the family is set to FamilyWild or
address the address length is 0.

Signed-off-by: Egbert Eich <[email protected]>
---
 process.c | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)

diff --git a/process.c b/process.c
index 0f719ce..b248799 100644
--- a/process.c
+++ b/process.c
@@ -1064,11 +1064,13 @@ eq_auth(Xauth *a, Xauth *b)
 static int
 match_auth_dpy(register Xauth *a, register Xauth *b)
 {
-    return ((a->family == b->family &&
-            a->address_length == b->address_length &&
-            a->number_length == b->number_length &&
-            memcmp(a->address, b->address, a->address_length) == 0 &&
-            memcmp(a->number, b->number, a->number_length) == 0) ? 1 : 0);
+    return (((a->family == FamilyWild || b->family == FamilyWild ||
+            (a->family == b->family &&
+             a->address_length == b->address_length &&
+             memcmp(a->address, b->address, a->address_length) == 0)) &&
+           (a->number_length == 0 || b->number_length == 0 ||
+            (a->number_length == b->number_length &&
+             memcmp(a->number, b->number, a->number_length) == 0))) ? 1 : 0);
 }
 
 /* return non-zero iff display and authorization type are the same */
-- 
1.8.1.4

_______________________________________________
[email protected]: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: http://lists.x.org/mailman/listinfo/xorg-devel

Reply via email to