Support XDM-AUTHORIZATION-1 on IPv6

Commit by Jamey Sharp and Josh Triplett.
This commit is contained in:
Josh Triplett 2006-11-21 00:57:49 -08:00
parent d6abe93b06
commit 684b8271a4

View File

@ -177,6 +177,26 @@ static int compute_auth(xcb_auth_info_t *info, Xauth *authptr, struct sockaddr *
APPEND(info->data, j, si->sin_port); APPEND(info->data, j, si->sin_port);
} }
break; break;
case AF_INET6:
/*block*/ {
struct sockaddr_in6 *si6 = (struct sockaddr_in6 *) sockname;
if(IN6_IS_ADDR_V4MAPPED(si6->sin6_addr.s6_addr))
{
APPEND(info->data, j, si6->sin6_addr.s6_addr[12]);
APPEND(info->data, j, si6->sin6_port);
}
else
{
/* XDM-AUTHORIZATION-1 does not handle IPv6 correctly. Do the
same thing Xlib does: use all zeroes for the 4-byte address
and 2-byte port number. */
long fakeaddr = 0;
short fakeport = 0;
APPEND(info->data, j, fakeaddr);
APPEND(info->data, j, fakeport);
}
}
break;
case AF_UNIX: case AF_UNIX:
/*block*/ { /*block*/ {
long fakeaddr = htonl(0xffffffff - next_nonce()); long fakeaddr = htonl(0xffffffff - next_nonce());