(original) (raw)
changeset: 81570:1a1989021451 branch: 2.7 parent: 81565:af5feb869304 user: Benjamin Peterson benjamin@python.org date: Fri Jan 18 00:10:24 2013 -0500 files: Lib/test/test_signal.py Misc/NEWS Modules/signalmodule.c description: check windows fd validity (closes #16992) diff -r af5feb869304 -r 1a1989021451 Lib/test/test_signal.py --- a/Lib/test/test_signal.py Thu Jan 17 23:10:12 2013 +0100 +++ b/Lib/test/test_signal.py Fri Jan 18 00:10:24 2013 -0500 @@ -227,6 +227,13 @@ signal.signal(7, handler) +class WakeupFDTests(unittest.TestCase): + + def test_invalid_fd(self): + fd = support.make_bad_fd() + self.assertRaises(ValueError, signal.set_wakeup_fd, fd) + + @unittest.skipIf(sys.platform == "win32", "Not valid on Windows") class WakeupSignalTests(unittest.TestCase): TIMEOUT_FULL = 10 @@ -485,8 +492,9 @@ def test_main(): test_support.run_unittest(BasicSignalTests, InterProcessSignalTests, - WakeupSignalTests, SiginterruptTest, - ItimerTest, WindowsSignalTests) + WakeupFDTests, WakeupSignalTests, + SiginterruptTest, ItimerTest, + WindowsSignalTests) if __name__ == "__main__": diff -r af5feb869304 -r 1a1989021451 Misc/NEWS --- a/Misc/NEWS Thu Jan 17 23:10:12 2013 +0100 +++ b/Misc/NEWS Fri Jan 18 00:10:24 2013 -0500 @@ -189,6 +189,9 @@ Library ------- +- Issue #16992: On Windows in signal.set_wakeup_fd, validate the file + descriptor argument. + - Issue #15861: tkinter now correctly works with lists and tuples containing strings with whitespaces, backslashes or unbalanced braces. diff -r af5feb869304 -r 1a1989021451 Modules/signalmodule.c --- a/Modules/signalmodule.c Thu Jan 17 23:10:12 2013 +0100 +++ b/Modules/signalmodule.c Fri Jan 18 00:10:24 2013 -0500 @@ -407,7 +407,7 @@ return NULL; } #endif - if (fd != -1 && fstat(fd, &buf) != 0) { + if (fd != -1 && (!_PyVerify_fd(fd) || fstat(fd, &buf) != 0)) { PyErr_SetString(PyExc_ValueError, "invalid fd"); return NULL; } /benjamin@python.org