diff options
author | Victor Stinner <victor.stinner@gmail.com> | 2014-07-23 22:56:55 +0200 |
---|---|---|
committer | Victor Stinner <victor.stinner@gmail.com> | 2014-07-23 22:56:55 +0200 |
commit | b6dab6bce83bc64d07abb9eeb9daec461414bc08 (patch) | |
tree | cc174608ff79a2ef089fe227bac34d9205135bec | |
parent | baddc840d5e3bb5ca5b48b0ae9f93bea09b35f19 (diff) | |
download | cpython-git-b6dab6bce83bc64d07abb9eeb9daec461414bc08.tar.gz |
Issue #22042: Avoid dangerous C cast in socket.setblocking()
Avoid cast from (int*) to (u_long*), even if sizeof(int) == sizeof(u_long).
-rw-r--r-- | Modules/socketmodule.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/Modules/socketmodule.c b/Modules/socketmodule.c index 780447c041..f510f0e214 100644 --- a/Modules/socketmodule.c +++ b/Modules/socketmodule.c @@ -548,6 +548,9 @@ set_gaierror(int error) static int internal_setblocking(PySocketSockObject *s, int block) { +#ifdef MS_WINDOWS + u_long arg; +#endif #if !defined(MS_WINDOWS) \ && !((defined(HAVE_SYS_IOCTL_H) && defined(FIONBIO))) int delay_flag, new_delay_flag; @@ -574,8 +577,8 @@ internal_setblocking(PySocketSockObject *s, int block) fcntl(s->sock_fd, F_SETFL, new_delay_flag); #endif #else /* MS_WINDOWS */ - block = !block; - ioctlsocket(s->sock_fd, FIONBIO, (u_long*)&block); + arg = !block; + ioctlsocket(s->sock_fd, FIONBIO, &arg); #endif /* MS_WINDOWS */ Py_END_ALLOW_THREADS |