Bug #1346533, select.poll() doesn't raise an error if timeout > sys.maxint

Need to check return result of PyInt_AsLong()

Will backport.
This commit is contained in:
Neal Norwitz 2005-11-03 05:00:25 +00:00
parent 26f4c23074
commit 0f46bbf781
3 changed files with 24 additions and 0 deletions

View File

@ -168,5 +168,25 @@ def test_poll2():
p.close()
print 'Poll test 2 complete'
def test_poll3():
# test int overflow
print 'Running poll test 3'
pollster = select.poll()
pollster.register(1)
try:
pollster.poll(1L << 64)
except OverflowError:
pass
else:
print 'Expected OverflowError with excessive timeout'
x = 2 + 3
if x != 5:
print 'Overflow must have occurred'
print 'Poll test 3 complete'
test_poll1()
test_poll2()
test_poll3()

View File

@ -177,6 +177,8 @@ Core and builtins
Extension Modules
-----------------
- Bug #1346533, select.poll() doesn't raise an error if timeout > sys.maxint
- Bug #1344508, Fix UNIX mmap leaking file descriptors
- Patch #1338314, Bug #1336623: fix tarfile so it can extract

View File

@ -470,6 +470,8 @@ poll_poll(pollObject *self, PyObject *args)
return NULL;
timeout = PyInt_AsLong(tout);
Py_DECREF(tout);
if (timeout == -1 && PyErr_Occurred())
return NULL;
}
/* Ensure the ufd array is up to date */