diff options
| author | Christian Heimes <christian@cheimes.de> | 2013-07-21 02:12:44 +0200 | 
|---|---|---|
| committer | Christian Heimes <christian@cheimes.de> | 2013-07-21 02:12:44 +0200 | 
| commit | 02e8b53e6da8b89466b87eaf2f1f8ee027962cbe (patch) | |
| tree | e5d924581e7b52a86340e7992a16e2c69f8d854c /Python/traceback.c | |
| parent | 68959475705df9bae196e26c4d9ea82f2e2ca7ad (diff) | |
| parent | 1f34729f42c0f386c5c95580ba736fd9758cf9a2 (diff) | |
| download | cpython-git-02e8b53e6da8b89466b87eaf2f1f8ee027962cbe.tar.gz | |
Check return value of lseek() in _Py_DisplaySourceLine().
Also use portable SEEK_SET instead of 0.
CID 1040639
Diffstat (limited to 'Python/traceback.c')
| -rw-r--r-- | Python/traceback.c | 8 | 
1 files changed, 7 insertions, 1 deletions
diff --git a/Python/traceback.c b/Python/traceback.c index 399a174eb8..31015800c7 100644 --- a/Python/traceback.c +++ b/Python/traceback.c @@ -264,7 +264,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);  | 
