diff options
author | Jason A. Donenfeld <Jason@zx2c4.com> | 2021-08-10 21:52:33 +0000 |
---|---|---|
committer | Jason A. Donenfeld <Jason@zx2c4.com> | 2021-08-11 00:46:14 +0000 |
commit | 09505053503364aca1a3d8db00f3c9e070f1ef53 (patch) | |
tree | a0a40f0eeab833b98afa95c2ebe35c219b0dbbb0 /driver/socket.c | |
parent | driver: receive: update SAL (diff) | |
download | wireguard-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.c | 19 |
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) |