From 1fd7c383efc72e3e43de6aefc20c6897bef62b0a Mon Sep 17 00:00:00 2001 From: Simon McVittie <smcv@collabora.com> Date: Wed, 16 Oct 2024 16:22:30 +0100 Subject: [PATCH] utils: Ensure that the buffer for struct cmsghdr is suitably-aligned A char array on the stack is not guaranteed to have any particular alignment. Resolves: https://github.com/containers/bubblewrap/issues/637 Signed-off-by: Simon McVittie <smcv@collabora.com> --- utils.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/utils.c b/utils.c index 1c978664d..51875aea9 100644 --- a/utils.c +++ b/utils.c @@ -759,7 +759,7 @@ send_pid_on_socket (int sockfd) struct msghdr msg = {}; struct iovec iov = { buf, sizeof (buf) }; const ssize_t control_len_snd = CMSG_SPACE(sizeof(struct ucred)); - char control_buf_snd[control_len_snd]; + _Alignas(struct cmsghdr) char control_buf_snd[control_len_snd]; struct cmsghdr *cmsg; struct ucred cred; @@ -801,7 +801,7 @@ read_pid_from_socket (int sockfd) struct msghdr msg = {}; struct iovec iov = { recv_buf, sizeof (recv_buf) }; const ssize_t control_len_rcv = CMSG_SPACE(sizeof(struct ucred)); - char control_buf_rcv[control_len_rcv]; + _Alignas(struct cmsghdr) char control_buf_rcv[control_len_rcv]; struct cmsghdr* cmsg; msg.msg_iov = &iov; -- GitLab