From 9da6a84089d01ddee0018198eea0ab271916d934 Mon Sep 17 00:00:00 2001 From: "Jason A. Donenfeld" Date: Tue, 3 Aug 2021 12:38:37 +0200 Subject: driver: socket: flip mask around on route lookup Very silly error that caused non-default routes to be ignored. Reported-by: Peter Whisker Signed-off-by: Jason A. Donenfeld --- driver/socket.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/driver/socket.c b/driver/socket.c index e75a91e..c0e6660 100644 --- a/driver/socket.c +++ b/driver/socket.c @@ -200,7 +200,7 @@ static BOOLEAN CidrMaskMatchV4(_In_ CONST IN_ADDR *Addr, _In_ CONST IP_ADDRESS_PREFIX *Prefix) { return Prefix->PrefixLength == 0 || - (Addr->s_addr & (~0U << (32 - Prefix->PrefixLength))) == Prefix->Prefix.Ipv4.sin_addr.s_addr; + (Addr->s_addr & (Htonl(~0U << (32 - Prefix->PrefixLength)))) == Prefix->Prefix.Ipv4.sin_addr.s_addr; } static BOOLEAN @@ -214,7 +214,7 @@ CidrMaskMatchV6(_In_ CONST IN6_ADDR *Addr, _In_ CONST IP_ADDRESS_PREFIX *Prefix) return FALSE; if (WholeParts == 4 || LeftoverBits == 0) return TRUE; - return (((UINT32 *)Addr)[WholeParts] & (~0U << (32 - LeftoverBits))) == + return (((UINT32 *)Addr)[WholeParts] & Htonl(~0U << (32 - LeftoverBits))) == ((UINT32 *)&Prefix->Prefix.Ipv6.sin6_addr)[WholeParts]; } -- cgit v1.2.3-59-g8ed1b