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]> --- v2: Tried to make condition more readable as suggested by walter harms <[email protected]>. process.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/process.c b/process.c index a9466a7..7ae5f21 100644 --- a/process.c +++ b/process.c @@ -1064,11 +1064,15 @@ 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); + if (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)) + return 0; + if (a->number_length != 0 && b->number_length != 0 && + (a->number_length != b->number_length || + memcmp(a->number, b->number, a->number_length) != 0)) + return 0; + return 1; } /* 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
