diff options
author | Victor Stinner <victor.stinner@gmail.com> | 2016-07-22 15:43:59 (GMT) |
---|---|---|
committer | Victor Stinner <victor.stinner@gmail.com> | 2016-07-22 15:43:59 (GMT) |
commit | 524714eeda70de01046e3b4736516f41d7d11010 (patch) | |
tree | ce1ee1d3cfad2a646f46d1581a677ba4c4ccde4f /Modules/_ssl.c | |
parent | 0cec877230a9232378eb2c7e21348029bbe83fea (diff) | |
download | cpython-524714eeda70de01046e3b4736516f41d7d11010.zip cpython-524714eeda70de01046e3b4736516f41d7d11010.tar.gz cpython-524714eeda70de01046e3b4736516f41d7d11010.tar.bz2 |
socket: use INVALID_SOCKET
* Replace "fd = -1" with "fd = INVALID_SOCKET"
* Replace "fd < 0" with "fd == INVALID_SOCKET": SOCKET_T is unsigned on Windows
Bug found by Pavel Belikov ("Fragment N1"):
http://www.viva64.com/en/b/0414/#ID0ECDAE
Diffstat (limited to 'Modules/_ssl.c')
-rw-r--r-- | Modules/_ssl.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/Modules/_ssl.c b/Modules/_ssl.c index 2732416..c21c0f8 100644 --- a/Modules/_ssl.c +++ b/Modules/_ssl.c @@ -113,6 +113,10 @@ struct py_ssl_library_code { # define HAVE_ALPN #endif +#ifndef INVALID_SOCKET /* MS defines this */ +#define INVALID_SOCKET (-1) +#endif + enum py_ssl_error { /* these mirror ssl.h */ PY_SSL_ERROR_NONE, @@ -1699,7 +1703,7 @@ PySSL_select(PySocketSockObject *s, int writing, _PyTime_t timeout) } /* Guard against closed socket */ - if (s->sock_fd < 0) + if (s->sock_fd == INVALID_SOCKET) return SOCKET_HAS_BEEN_CLOSED; /* Prefer poll, if available, since you can poll() any fd @@ -2023,7 +2027,7 @@ _ssl__SSLSocket_shutdown_impl(PySSLSocket *self) if (sock != NULL) { /* Guard against closed socket */ - if ((((PyObject*)sock) == Py_None) || (sock->sock_fd < 0)) { + if ((((PyObject*)sock) == Py_None) || (sock->sock_fd == INVALID_SOCKET)) { _setSSLError("Underlying socket connection gone", PY_SSL_ERROR_NO_SOCKET, __FILE__, __LINE__); return NULL; |