Index: Lib/test/test_fileio.py =================================================================== --- Lib/test/test_fileio.py (revision 81232) +++ Lib/test/test_fileio.py (working copy) @@ -310,8 +310,10 @@ os.unlink(TESTFN) def testInvalidFd(self): - self.assertRaises(ValueError, _FileIO, -10) + self.assertRaises(ValueError, _FileIO, -10) self.assertRaises(OSError, _FileIO, make_bad_fd()) + import msvcrt + self.assertRaises(IOError, msvcrt.get_osfhandle, make_bad_fd()) def testBadModeArgument(self): # verify that we get a sensible error message for bad mode argument Index: PC/msvcrtmodule.c =================================================================== --- PC/msvcrtmodule.c (revision 81232) +++ PC/msvcrtmodule.c (working copy) @@ -141,7 +141,11 @@ if (!PyArg_ParseTuple(args,"i:get_osfhandle", &fd)) return NULL; + if (!_PyVerify_fd(fd)) + return PyErr_SetFromErrno(PyExc_IOError); + handle = _get_osfhandle(fd); + if (handle == -1) return PyErr_SetFromErrno(PyExc_IOError);