From: Christian Heimes Date: Sun, 21 Jul 2013 00:12:35 +0000 (+0200) Subject: Check return value of lseek() in _Py_DisplaySourceLine(). X-Git-Tag: v3.4.0a1~121^2 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=1f34729f42c0f386c5c95580ba736fd9758cf9a2;p=thirdparty%2FPython%2Fcpython.git Check return value of lseek() in _Py_DisplaySourceLine(). Also use portable SEEK_SET instead of 0. CID 1040639 --- diff --git a/Python/traceback.c b/Python/traceback.c index c37aab0a9c11..1f611ba1d515 100644 --- a/Python/traceback.c +++ b/Python/traceback.c @@ -262,7 +262,13 @@ _Py_DisplaySourceLine(PyObject *f, PyObject *filename, int lineno, int indent) } found_encoding = PyTokenizer_FindEncodingFilename(fd, filename); encoding = (found_encoding != NULL) ? found_encoding : "utf-8"; - lseek(fd, 0, 0); /* Reset position */ + /* Reset position */ + if (lseek(fd, 0, SEEK_SET) == (off_t)-1) { + Py_DECREF(io); + Py_DECREF(binary); + PyMem_FREE(found_encoding); + return PyErr_SetFromErrnoWithFilenameObject(PyExc_IOError, filename); + } fob = _PyObject_CallMethodId(io, &PyId_TextIOWrapper, "Os", binary, encoding); Py_DECREF(io); Py_DECREF(binary);