mirror of
https://github.com/python/cpython.git
synced 2025-08-04 00:48:58 +00:00
Issue #12287: Fix a stack corruption in ossaudiodev module when the FD is
greater than FD_SETSIZE.
This commit is contained in:
commit
ac7e9e058d
6 changed files with 21 additions and 19 deletions
|
@ -485,18 +485,14 @@ static PyTypeObject sock_type;
|
|||
#define SOCKLEN_T_LIMIT INT_MAX
|
||||
#endif
|
||||
|
||||
#ifdef Py_SOCKET_FD_CAN_BE_GE_FD_SETSIZE
|
||||
/* Platform can select file descriptors beyond FD_SETSIZE */
|
||||
#define IS_SELECTABLE(s) 1
|
||||
#elif defined(HAVE_POLL)
|
||||
#ifdef HAVE_POLL
|
||||
/* Instead of select(), we'll use poll() since poll() works on any fd. */
|
||||
#define IS_SELECTABLE(s) 1
|
||||
/* Can we call select() with this socket without a buffer overrun? */
|
||||
#else
|
||||
/* POSIX says selecting file descriptors beyond FD_SETSIZE
|
||||
has undefined behaviour. If there's no timeout left, we don't have to
|
||||
call select, so it's a safe, little white lie. */
|
||||
#define IS_SELECTABLE(s) ((s)->sock_fd < FD_SETSIZE || s->sock_timeout <= 0.0)
|
||||
/* If there's no timeout left, we don't have to call select, so it's a safe,
|
||||
* little white lie. */
|
||||
#define IS_SELECTABLE(s) (_PyIsSelectable_fd((s)->sock_fd) || (s)->sock_timeout <= 0.0)
|
||||
#endif
|
||||
|
||||
static PyObject*
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue