From: Victor Stinner Date: Wed, 23 Jul 2014 20:56:55 +0000 (+0200) Subject: Issue #22042: Avoid dangerous C cast in socket.setblocking() X-Git-Tag: v3.5.0a1~1225 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=b6dab6bce83bc64d07abb9eeb9daec461414bc08;p=thirdparty%2FPython%2Fcpython.git Issue #22042: Avoid dangerous C cast in socket.setblocking() Avoid cast from (int*) to (u_long*), even if sizeof(int) == sizeof(u_long). --- diff --git a/Modules/socketmodule.c b/Modules/socketmodule.c index 780447c04145..f510f0e2148d 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