summaryrefslogtreecommitdiffstats
path: root/Modules/zipimport.c
diff options
context:
space:
mode:
authorVictor Stinner <victor.stinner@gmail.com>2015-03-18 12:56:25 (GMT)
committerVictor Stinner <victor.stinner@gmail.com>2015-03-18 12:56:25 (GMT)
commit5200f5502407045b747b97168b80d63a3cfafd4f (patch)
treefac1d45532ec623f80bdd245b7ed78fc678f66fb /Modules/zipimport.c
parent50931f41d0837d309289ec36b80951d3c38b30d4 (diff)
downloadcpython-5200f5502407045b747b97168b80d63a3cfafd4f.zip
cpython-5200f5502407045b747b97168b80d63a3cfafd4f.tar.gz
cpython-5200f5502407045b747b97168b80d63a3cfafd4f.tar.bz2
Issue #19428: Handle PyMarshal_Read*() errors in run_pyc_file()
Detect also earlier PyMarshal_Read*() errors in zipimport.
Diffstat (limited to 'Modules/zipimport.c')
-rw-r--r--Modules/zipimport.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/Modules/zipimport.c b/Modules/zipimport.c
index f5ac10b..e83214c 100644
--- a/Modules/zipimport.c
+++ b/Modules/zipimport.c
@@ -939,6 +939,9 @@ read_directory(PyObject *archive)
header_size = name_size +
PyMarshal_ReadShortFromFile(fp) +
PyMarshal_ReadShortFromFile(fp);
+ if (PyErr_Occurred())
+ goto error;
+
if (fread(dummy, 1, 8, fp) != 8) /* Skip unused fields, avoid fseek */
goto file_error;
file_offset = PyMarshal_ReadLongFromFile(fp) + arc_offset;