diff options
author | Charles-François Natali <neologix@free.fr> | 2011-08-28 18:23:43 +0200 |
---|---|---|
committer | Charles-François Natali <neologix@free.fr> | 2011-08-28 18:23:43 +0200 |
commit | 9c9963faed761e4246cf8485522cbfb71f8548fa (patch) | |
tree | e6b67bf1694742c2836dedcc395eca27cb9587d9 /Modules/socketmodule.c | |
parent | 305d15175ea4e3842fa58ddc32f6ba9342e73c87 (diff) | |
download | cpython-9c9963faed761e4246cf8485522cbfb71f8548fa.tar.gz |
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.
Diffstat (limited to 'Modules/socketmodule.c')
-rw-r--r-- | Modules/socketmodule.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/Modules/socketmodule.c b/Modules/socketmodule.c index f56e9afd52..79ccae8cdb 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; |