aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJason A. Donenfeld <Jason@zx2c4.com>2021-08-04 05:27:57 +0200
committerJason A. Donenfeld <Jason@zx2c4.com>2021-08-04 19:47:39 +0200
commit19ab593ef04f5bbf5e1edf461db90836ff61fa52 (patch)
treeae337417944e580505bd388603c3b1764cb0d9cd
parentprops: tie code analysis to sdv hacks rather than debug builds (diff)
downloadwireguard-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.c4
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;