On Tue, Jul 30, 2013 at 11:01:40AM +0200, Egbert Eich wrote:
> 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.
>
Does anyone care to look at this?
It will change the behavior of xauth to match what Xlib and xcb
are doing. Still the behavior of xauth will change potentially
breaking some home-brew scripts.
Cheers,
Egbert.
> 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