1
0
mirror of https://sourceware.org/git/glibc.git synced 2025-08-07 06:43:00 +03:00

bits/socket.h: Update to recent BSD definition

The old BSD 4.4 definition (not used by Linux) was not 64b-proof: the
cmsg_data field is supposed to CMSG_ALIGN'ed (as can be also seen in the
CMSG_LEN macro).

Suggested-by: Diego Nieto Cid <dnietoc@gmail.com>
This commit is contained in:
Samuel Thibault
2025-01-01 22:07:42 +01:00
parent 6e177ca635
commit cf13f740a9
2 changed files with 8 additions and 16 deletions

View File

@@ -221,17 +221,13 @@ struct cmsghdr
of cmsghdr structure. */
int cmsg_level; /* Originating protocol. */
int cmsg_type; /* Protocol specific type. */
#if __glibc_c99_flexarr_available
__extension__ unsigned char __cmsg_data __flexarr; /* Ancillary data. */
#endif
/* This field is to be aligned with CMSG_ALIGN */
/* __extension__ unsigned char __cmsg_data __flexarr; */ /* Ancillary data. */
};
/* Ancillary data object manipulation macros. */
#if __glibc_c99_flexarr_available
# define CMSG_DATA(cmsg) ((cmsg)->__cmsg_data)
#else
# define CMSG_DATA(cmsg) ((unsigned char *) ((struct cmsghdr *) (cmsg) + 1))
#endif
#define CMSG_DATA(cmsg) \
((unsigned char *) (cmsg) + CMSG_ALIGN (sizeof (struct cmsghdr)))
#define CMSG_NXTHDR(mhdr, cmsg) __cmsg_nxthdr (mhdr, cmsg)