diff options
author | 2021-08-03 12:38:37 +0200 | |
---|---|---|
committer | 2021-08-03 12:38:37 +0200 | |
commit | 9da6a84089d01ddee0018198eea0ab271916d934 (patch) | |
tree | f53ea2d0491363e3c9b049936fc994245d305328 | |
parent | driver: receive: don't use ParentNetBuffer when passing off NBLs to NDIS (diff) | |
download | wireguard-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>
-rw-r--r-- | driver/socket.c | 4 |
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]; } |