aboutsummaryrefslogtreecommitdiffstats
path: root/driver/socket.c
diff options
context:
space:
mode:
authorJason A. Donenfeld <Jason@zx2c4.com>2021-08-10 21:52:33 +0000
committerJason A. Donenfeld <Jason@zx2c4.com>2021-08-11 00:46:14 +0000
commit09505053503364aca1a3d8db00f3c9e070f1ef53 (patch)
treea0a40f0eeab833b98afa95c2ebe35c219b0dbbb0 /driver/socket.c
parentdriver: receive: update SAL (diff)
downloadwireguard-nt-09505053503364aca1a3d8db00f3c9e070f1ef53.tar.xz
wireguard-nt-09505053503364aca1a3d8db00f3c9e070f1ef53.zip
driver: socket: relax cmsg alignment, but assert macros match
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
Diffstat (limited to 'driver/socket.c')
-rw-r--r--driver/socket.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/driver/socket.c b/driver/socket.c
index 239256e..370fde6 100644
--- a/driver/socket.c
+++ b/driver/socket.c
@@ -483,6 +483,25 @@ cleanupCtx:
return Status;
}
+static_assert(
+ WSA_CMSGDATA_ALIGN(WSA_CMSG_LEN(RTL_FIELD_SIZE(ENDPOINT, Src4))) == WSA_CMSG_SPACE(RTL_FIELD_SIZE(ENDPOINT, Src4)),
+ "cmsg calculation mismatch");
+static_assert(
+ WSA_CMSGDATA_ALIGN(WSA_CMSG_LEN(RTL_FIELD_SIZE(ENDPOINT, Src6))) == WSA_CMSG_SPACE(RTL_FIELD_SIZE(ENDPOINT, Src6)),
+ "cmsg calculation mismatch");
+static_assert(
+ WSA_CMSGDATA_ALIGN(sizeof(WSACMSGHDR)) + FIELD_OFFSET(ENDPOINT, Cmsg) == FIELD_OFFSET(ENDPOINT, Src4),
+ "cmsg calculation mismatch");
+static_assert(
+ WSA_CMSGDATA_ALIGN(sizeof(WSACMSGHDR)) + FIELD_OFFSET(ENDPOINT, Cmsg) == FIELD_OFFSET(ENDPOINT, Src6),
+ "cmsg calculation mismatch");
+static_assert(
+ FIELD_OFFSET(ENDPOINT, Cmsg) + WSA_CMSG_SPACE(RTL_FIELD_SIZE(ENDPOINT, Src4)) <= sizeof(ENDPOINT),
+ "cmsg calculation mismatch");
+static_assert(
+ FIELD_OFFSET(ENDPOINT, Cmsg) + WSA_CMSG_SPACE(RTL_FIELD_SIZE(ENDPOINT, Src6)) <= sizeof(ENDPOINT),
+ "cmsg calculation mismatch");
+
_Post_maybenull_
static VOID *
FindInCmsgHdr(_In_ WSK_DATAGRAM_INDICATION *Data, _In_ CONST INT Level, _In_ CONST INT Type)