diff options
author | 2021-08-04 05:27:57 +0200 | |
---|---|---|
committer | 2021-08-04 19:47:39 +0200 | |
commit | 19ab593ef04f5bbf5e1edf461db90836ff61fa52 (patch) | |
tree | ae337417944e580505bd388603c3b1764cb0d9cd | |
parent | props: tie code analysis to sdv hacks rather than debug builds (diff) | |
download | wireguard-nt-19ab593ef04f5bbf5e1edf461db90836ff61fa52.tar.xz wireguard-nt-19ab593ef04f5bbf5e1edf461db90836ff61fa52.zip |
driver: socket: use implicit CMSG_SPACE for total length, for v6
It expects to receive the total space, with padding, for the cmsg length
argument, so pad out cmsg_len to the data padding multiple, which
amounts to the same thing. This will fix IPv6 endpoints.
Reported-by: Darren VanBuren <onekopaka@theoks.net>
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 9b67532..64d26f3 100644 --- a/driver/socket.c +++ b/driver/socket.c @@ -177,7 +177,7 @@ SendAsync(_In_ WG_DEVICE *Wg, _In_ __drv_aliasesMem SOCKET_SEND_CTX *Ctx) NET_BUFFER_WSK_BUF(NET_BUFFER_LIST_FIRST_NB(Ctx->FirstNbl)), 0, (PSOCKADDR)&Ctx->Endpoint.Addr, - (ULONG)Ctx->Endpoint.SrcCmsghdr.cmsg_len, + (ULONG)WSA_CMSGDATA_ALIGN(Ctx->Endpoint.SrcCmsghdr.cmsg_len), &Ctx->Endpoint.SrcCmsghdr, &Ctx->Irp); else @@ -187,7 +187,7 @@ SendAsync(_In_ WG_DEVICE *Wg, _In_ __drv_aliasesMem SOCKET_SEND_CTX *Ctx) &Ctx->Buffer, 0, (PSOCKADDR)&Ctx->Endpoint.Addr, - (ULONG)Ctx->Endpoint.SrcCmsghdr.cmsg_len, + (ULONG)WSA_CMSGDATA_ALIGN(Ctx->Endpoint.SrcCmsghdr.cmsg_len), &Ctx->Endpoint.SrcCmsghdr, &Ctx->Irp); Status = STATUS_SUCCESS; |