summaryrefslogtreecommitdiffstats
path: root/Lib
diff options
context:
space:
mode:
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>2018-06-11 01:23:41 (GMT)
committerNed Deily <nad@python.org>2018-06-11 01:23:41 (GMT)
commit3e121581d008a780b8a9f1bcda5966cf0c06f6d5 (patch)
treede38037b69999d61727b5c36117660ee77263efe /Lib
parent1d4089b5d208ae6f0bd256304fd77f04c0b4fd41 (diff)
downloadcpython-3e121581d008a780b8a9f1bcda5966cf0c06f6d5.zip
cpython-3e121581d008a780b8a9f1bcda5966cf0c06f6d5.tar.gz
cpython-3e121581d008a780b8a9f1bcda5966cf0c06f6d5.tar.bz2
bpo-30167: Prevent site.main() exception if PYTHONSTARTUP is set. (GH-6731) (GH-7607)
Before Python 3.6, os.path.abspath(None) used to report an AttributeError which was properly caught inside site.abs_paths, making it ignore __main__, one of sys.modules, which has __file__ and __cached__ set to None. With 3.6, os.path.abspath(None) raises TypeError instead which site.abs_path was not expecting. This resulted in an uncaught exception if a user had PYTHONSTARTUP set and the application called site.main() which a number of third-party programs do. (cherry picked from commit 2487f30d5529948ace26559e274d7cac6abcd1a8) Co-authored-by: Steve Weber <steverweber@gmail.com>
Diffstat (limited to 'Lib')
-rw-r--r--Lib/site.py4
1 files changed, 2 insertions, 2 deletions
diff --git a/Lib/site.py b/Lib/site.py
index 0fc9200..1bd63cc 100644
--- a/Lib/site.py
+++ b/Lib/site.py
@@ -104,11 +104,11 @@ def abs_paths():
continue # don't mess with a PEP 302-supplied __file__
try:
m.__file__ = os.path.abspath(m.__file__)
- except (AttributeError, OSError):
+ except (AttributeError, OSError, TypeError):
pass
try:
m.__cached__ = os.path.abspath(m.__cached__)
- except (AttributeError, OSError):
+ except (AttributeError, OSError, TypeError):
pass