summaryrefslogtreecommitdiffstats
path: root/Lib/modulefinder.py
diff options
context:
space:
mode:
authorBrett Cannon <brett@python.org>2014-02-28 15:50:34 (GMT)
committerBrett Cannon <brett@python.org>2014-02-28 15:50:34 (GMT)
commit0f3847855dafbfaeed385a676a004f9bb5a9cf83 (patch)
tree73545353dc566ddbf7d04552d6e4ae6a761b6135 /Lib/modulefinder.py
parentacc74e6c63d5f4b91b26134b1fc61aa005aa26e3 (diff)
parent298bb967767d666fca8177f8c2352c2134490565 (diff)
downloadcpython-0f3847855dafbfaeed385a676a004f9bb5a9cf83.zip
cpython-0f3847855dafbfaeed385a676a004f9bb5a9cf83.tar.gz
cpython-0f3847855dafbfaeed385a676a004f9bb5a9cf83.tar.bz2
merge for issue #20778
Diffstat (limited to 'Lib/modulefinder.py')
-rw-r--r--Lib/modulefinder.py12
1 files changed, 7 insertions, 5 deletions
diff --git a/Lib/modulefinder.py b/Lib/modulefinder.py
index b19941e..cc5b8cc 100644
--- a/Lib/modulefinder.py
+++ b/Lib/modulefinder.py
@@ -1,6 +1,7 @@
"""Find modules used by a script, using introspection."""
import dis
+import importlib._bootstrap
import importlib.machinery
import marshal
import os
@@ -287,11 +288,12 @@ class ModuleFinder:
if type == imp.PY_SOURCE:
co = compile(fp.read()+'\n', pathname, 'exec')
elif type == imp.PY_COMPILED:
- if fp.read(4) != imp.get_magic():
- self.msgout(2, "raise ImportError: Bad magic number", pathname)
- raise ImportError("Bad magic number in %s" % pathname)
- fp.read(4)
- co = marshal.load(fp)
+ try:
+ marshal_data = importlib._bootstrap._validate_bytecode_header(fp.read())
+ except ImportError as exc:
+ self.msgout(2, "raise ImportError: " + str(exc), pathname)
+ raise
+ co = marshal.loads(marshal_data)
else:
co = None
m = self.add_module(fqname)