diff options
author | Richard Oudkerk <shibturn@gmail.com> | 2012-07-06 11:05:32 (GMT) |
---|---|---|
committer | Richard Oudkerk <shibturn@gmail.com> | 2012-07-06 11:05:32 (GMT) |
commit | 2240ac1eae2dd8674748239af9c61e5ab4faeb2c (patch) | |
tree | 9e851d9c9d9df1a377e1fd95ed27a9f29f923313 /Modules/posixmodule.c | |
parent | 74de1536810946f82c1e6526fff55646fa119b3d (diff) | |
download | cpython-2240ac1eae2dd8674748239af9c61e5ab4faeb2c.zip cpython-2240ac1eae2dd8674748239af9c61e5ab4faeb2c.tar.gz cpython-2240ac1eae2dd8674748239af9c61e5ab4faeb2c.tar.bz2 |
Issue #15261: Stop os.stat(fd) crashing on Windows when fd not open.
Diffstat (limited to 'Modules/posixmodule.c')
-rw-r--r-- | Modules/posixmodule.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c index 1bd5e97..b99a5fe 100644 --- a/Modules/posixmodule.c +++ b/Modules/posixmodule.c @@ -1829,7 +1829,10 @@ win32_fstat(int file_number, struct win32_stat *result) HANDLE h; int type; - h = (HANDLE)_get_osfhandle(file_number); + if (!_PyVerify_fd(file_number)) + h = INVALID_HANDLE_VALUE; + else + h = (HANDLE)_get_osfhandle(file_number); /* Protocol violation: we explicitly clear errno, instead of setting it to a POSIX error. Callers should use GetLastError. */ @@ -8244,8 +8247,6 @@ posix_fstat(PyObject *self, PyObject *args) /* on OpenVMS we must ensure that all bytes are written to the file */ fsync(fd); #endif - if (!_PyVerify_fd(fd)) - return posix_error(); Py_BEGIN_ALLOW_THREADS res = FSTAT(fd, &st); Py_END_ALLOW_THREADS |