]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
socket/tst-cmsghdr: Fix alignment of cmsghdr
authorSamuel Thibault <samuel.thibault@ens-lyon.org>
Sun, 12 Jan 2025 14:57:26 +0000 (15:57 +0100)
committerSamuel Thibault <samuel.thibault@ens-lyon.org>
Sun, 12 Jan 2025 14:57:26 +0000 (15:57 +0100)
The computation was correct on Linux only by luck because the cmsghdr size
is already aligned there.

socket/tst-cmsghdr-skeleton.c

index e2b743a368fc48220d76730ce702ce0f68573462..9ad2d59d5fe345b80ba919d5eefb29e23204b1dc 100644 (file)
@@ -56,7 +56,7 @@ RUN_TEST_FUNCNAME (CMSG_NXTHDR_IMPL) (void)
   /* The first header leaves just enough space to hold another header.  */
   cmsg = CMSG_FIRSTHDR (&m);
   TEST_VERIFY_EXIT ((char *) cmsg == cmsgbuf);
-  cmsg->cmsg_len = sizeof (cmsgbuf) - sizeof (struct cmsghdr);
+  cmsg->cmsg_len = sizeof (cmsgbuf) - CMSG_ALIGN (sizeof (struct cmsghdr));
   cmsg = CMSG_NXTHDR_IMPL (&m, cmsg);
   TEST_VERIFY_EXIT (cmsg != NULL);
 
@@ -75,7 +75,7 @@ RUN_TEST_FUNCNAME (CMSG_NXTHDR_IMPL) (void)
   TEST_VERIFY_EXIT (cmsg != NULL);
   cmsg->cmsg_len = sizeof (cmsgbuf)
                    - CMSG_SPACE (sizeof (PAYLOAD)) /* First header.  */
-                   - sizeof (struct cmsghdr);
+                   - CMSG_ALIGN (sizeof (struct cmsghdr));
   cmsg = CMSG_NXTHDR_IMPL (&m, cmsg);
   TEST_VERIFY_EXIT (cmsg != NULL);