From: Charles-François Natali Date: Sun, 28 Aug 2011 16:23:43 +0000 (+0200) Subject: Issue #12837: POSIX.1-2008 allows socklen_t to be a signed integer: re-enable X-Git-Tag: v3.3.0a1~1604 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=466517df0e272f1b5d46d4e5eed112cefec3d7e3;p=thirdparty%2FPython%2Fcpython.git 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. --- diff --git a/Modules/socketmodule.c b/Modules/socketmodule.c index f56e9afd52d0..79ccae8cdbc4 100644 --- a/Modules/socketmodule.c +++ b/Modules/socketmodule.c @@ -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) + 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; if (space < cmsg_len_end) space = cmsg_len_end;