Issue #12837: POSIX.1-2008 allows socklen_t to be a signed integer: re-enable

the check against negative values, and add a note on this surprising test.
Patch by David Watson.
This commit is contained in:
Charles-François Natali 2011-08-28 18:23:43 +02:00
parent ac7e9e058d
commit 466517df0e
1 changed files with 2 additions and 1 deletions

View File

@ -1745,7 +1745,8 @@ cmsg_min_space(struct msghdr *msg, struct cmsghdr *cmsgh, size_t space)
static const size_t cmsg_len_end = (offsetof(struct cmsghdr, cmsg_len) + static const size_t cmsg_len_end = (offsetof(struct cmsghdr, cmsg_len) +
sizeof(cmsgh->cmsg_len)); sizeof(cmsgh->cmsg_len));
if (cmsgh == NULL || msg->msg_control == NULL) /* Note that POSIX allows msg_controllen to be of signed type. */
if (cmsgh == NULL || msg->msg_control == NULL || msg->msg_controllen < 0)
return 0; return 0;
if (space < cmsg_len_end) if (space < cmsg_len_end)
space = cmsg_len_end; space = cmsg_len_end;