aboutsummaryrefslogtreecommitdiffstats
path: root/driver/socket.c
diff options
context:
space:
mode:
authorJason A. Donenfeld <Jason@zx2c4.com>2021-08-03 12:38:37 +0200
committerJason A. Donenfeld <Jason@zx2c4.com>2021-08-03 12:38:37 +0200
commit9da6a84089d01ddee0018198eea0ab271916d934 (patch)
treef53ea2d0491363e3c9b049936fc994245d305328 /driver/socket.c
parentdriver: receive: don't use ParentNetBuffer when passing off NBLs to NDIS (diff)
downloadwireguard-nt-9da6a84089d01ddee0018198eea0ab271916d934.tar.xz
wireguard-nt-9da6a84089d01ddee0018198eea0ab271916d934.zip
driver: socket: flip mask around on route lookup
Very silly error that caused non-default routes to be ignored. Reported-by: Peter Whisker <peter.whisker@gmail.com> Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
Diffstat (limited to 'driver/socket.c')
-rw-r--r--driver/socket.c4
1 files 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];
}