From 5800354c99e1823004c45b04266066de5fa060d6 Mon Sep 17 00:00:00 2001 From: Jeremie Courreges-Anglas Date: Thu, 21 Jan 2021 22:46:19 +0000 Subject: Safer workaround for the "kame hack": only override sin6_scope_id if zero The assumption is that if sin6_scope_id is set, then the interface index is no longer embedded in the address. ok claudio@ matthieu@ --- xserver/os/access.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'xserver') diff --git a/xserver/os/access.c b/xserver/os/access.c index 97246160c..24a2ff7b6 100644 --- a/xserver/os/access.c +++ b/xserver/os/access.c @@ -582,7 +582,7 @@ static void in6_fillscopeid(struct sockaddr_in6 *sin6) { #if defined(__KAME__) - if (IN6_IS_ADDR_LINKLOCAL(&sin6->sin6_addr)) { + if (IN6_IS_ADDR_LINKLOCAL(&sin6->sin6_addr) && sin6->sin6_scope_id == 0) { sin6->sin6_scope_id = ntohs(*(u_int16_t *) &sin6->sin6_addr.s6_addr[2]); sin6->sin6_addr.s6_addr[2] = sin6->sin6_addr.s6_addr[3] = 0; -- cgit v1.2.3