From 971a012ce178d1b50b272bc035bfcc795e73c781 Mon Sep 17 00:00:00 2001 From: Brett Cannon Date: Thu, 15 Feb 2007 22:54:39 +0000 Subject: Update the encoding package's search function to use absolute imports when calling __import__. This helps make the expected search locations for encoding modules be more explicit. One could use an explicit value for __path__ when making the call to __import__ to force the exact location searched for encodings. This would give the most strict search path possible if one is worried about malicious code being imported. The unfortunate side-effect of that is that if __path__ was modified on 'encodings' on purpose in a safe way it would not be picked up in future __import__ calls. --- Lib/encodings/__init__.py | 6 ++++-- Misc/NEWS | 3 +++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/Lib/encodings/__init__.py b/Lib/encodings/__init__.py index 6cf6089..190b3c4 100644 --- a/Lib/encodings/__init__.py +++ b/Lib/encodings/__init__.py @@ -93,8 +93,10 @@ def search_function(encoding): if not modname or '.' in modname: continue try: - mod = __import__('encodings.' + modname, - globals(), locals(), _import_tail) + # Import equivalent to `` from .modname import *``. + # '*' is used so that __import__ returns the desired module and not + # 'encodings' itself. + mod = __import__(modname, globals(), locals(), ['*'], 1) except ImportError: pass else: diff --git a/Misc/NEWS b/Misc/NEWS index 1426799..dffd5b7 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -128,6 +128,9 @@ Core and builtins Library ------- +- Have the encoding package's search function dynamically import using absolute + import semantics. + - Patch #1647484: Renamed GzipFile's filename attribute to name. - Patch #1517891: Mode 'a' for ZipFile now creates the file if it -- cgit v0.12