summaryrefslogtreecommitdiff
path: root/Python/traceback.c
diff options
context:
space:
mode:
authorChristian Heimes <christian@cheimes.de>2013-07-21 01:53:18 +0200
committerChristian Heimes <christian@cheimes.de>2013-07-21 01:53:18 +0200
commite0de53955df8dc150bff13050652737e161f24d9 (patch)
treeec7a95ec157fcf3c2798e53b79bdf87154345db7 /Python/traceback.c
parent2a442d066d721246b70f8cb55e05620017a003d7 (diff)
parentfd58e214588f9aa434d4eb0d7b9a080da135adb0 (diff)
downloadcpython-e0de53955df8dc150bff13050652737e161f24d9.tar.gz
Check return value of PyObject_AsFileDescriptor() in _Py_DisplaySourceLine() for error
CID 486768
Diffstat (limited to 'Python/traceback.c')
-rw-r--r--Python/traceback.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/Python/traceback.c b/Python/traceback.c
index 8130d4bcec..399a174eb8 100644
--- a/Python/traceback.c
+++ b/Python/traceback.c
@@ -257,6 +257,11 @@ _Py_DisplaySourceLine(PyObject *f, PyObject *filename, int lineno, int indent)
/* use the right encoding to decode the file as unicode */
fd = PyObject_AsFileDescriptor(binary);
+ if (fd < 0) {
+ Py_DECREF(io);
+ Py_DECREF(binary);
+ return NULL;
+ }
found_encoding = PyTokenizer_FindEncodingFilename(fd, filename);
encoding = (found_encoding != NULL) ? found_encoding : "utf-8";
lseek(fd, 0, 0); /* Reset position */