Issue #14084: Fix a file descriptor leak when importing a module with a bad encoding.

This commit is contained in:
Antoine Pitrou 2012-02-22 18:05:43 +01:00
parent 7214612443
commit 4f22a8d739
2 changed files with 6 additions and 1 deletions

View File

@ -10,6 +10,9 @@ What's New in Python 3.2.3?
Core and Builtins Core and Builtins
----------------- -----------------
- Issue #14084: Fix a file descriptor leak when importing a module with a
bad encoding.
- Issue #13703: oCERT-2011-003: add -R command-line option and PYTHONHASHSEED - Issue #13703: oCERT-2011-003: add -R command-line option and PYTHONHASHSEED
environment variable, to provide an opt-in way to protect against denial of environment variable, to provide an opt-in way to protect against denial of
service attacks due to hash collisions within the dict and set types. Patch service attacks due to hash collisions within the dict and set types. Patch

View File

@ -3195,8 +3195,10 @@ call_find_module(char *name, PyObject *path)
memory. */ memory. */
found_encoding = PyTokenizer_FindEncoding(fd); found_encoding = PyTokenizer_FindEncoding(fd);
lseek(fd, 0, 0); /* Reset position */ lseek(fd, 0, 0); /* Reset position */
if (found_encoding == NULL && PyErr_Occurred()) if (found_encoding == NULL && PyErr_Occurred()) {
close(fd);
return NULL; return NULL;
}
encoding = (found_encoding != NULL) ? found_encoding : encoding = (found_encoding != NULL) ? found_encoding :
(char*)PyUnicode_GetDefaultEncoding(); (char*)PyUnicode_GetDefaultEncoding();
} }