From 65bbd235a6c074a09e6adb61ba81a511bf044d5c Mon Sep 17 00:00:00 2001 From: Fangrui Song Date: Fri, 11 Aug 2023 07:51:59 -0700 Subject: [PATCH] Align buffer for cmsg `char control[CMSG_SPACE(sizeof(*out_cmsg_value)) + 1];` is not aligned as cmsghdr. Accessing its member may lead to a -fsanitize=alignment failure. Align `control` to struct cmsghdr to fix the issue. PiperOrigin-RevId: 555951052 --- test/syscalls/linux/ip_socket_test_util.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/syscalls/linux/ip_socket_test_util.cc b/test/syscalls/linux/ip_socket_test_util.cc index aa52a7ccb..8c87539b1 100644 --- a/test/syscalls/linux/ip_socket_test_util.cc +++ b/test/syscalls/linux/ip_socket_test_util.cc @@ -258,7 +258,7 @@ void RecvCmsg(int sock, int cmsg_level, int cmsg_type, char buf[], iov.iov_len = *buf_size, }; // Add an extra byte to confirm we only read what we expected. - char control[CMSG_SPACE(sizeof(*out_cmsg_value)) + 1]; + alignas(struct cmsghdr) char control[CMSG_SPACE(sizeof(*out_cmsg_value)) + 1]; msghdr msg = { .msg_iov = &iov, .msg_iovlen = 1,