diff options
author | Serhiy Storchaka <storchaka@gmail.com> | 2020-06-20 08:10:31 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-06-20 08:10:31 (GMT) |
commit | 935586845815f5b4c7814794413f6a812d4bd45f (patch) | |
tree | 69297d0f173d3b42895adb1da65c99f1e021b586 /Tools/c-analyzer | |
parent | a041e116db5f1e78222cbf2c22aae96457372680 (diff) | |
download | cpython-935586845815f5b4c7814794413f6a812d4bd45f.zip cpython-935586845815f5b4c7814794413f6a812d4bd45f.tar.gz cpython-935586845815f5b4c7814794413f6a812d4bd45f.tar.bz2 |
bpo-41043: Escape literal part of the path for glob(). (GH-20994)
Diffstat (limited to 'Tools/c-analyzer')
-rw-r--r-- | Tools/c-analyzer/c_analyzer/common/files.py | 6 | ||||
-rw-r--r-- | Tools/c-analyzer/check-c-globals.py | 4 |
2 files changed, 7 insertions, 3 deletions
diff --git a/Tools/c-analyzer/c_analyzer/common/files.py b/Tools/c-analyzer/c_analyzer/common/files.py index ab551a8..f630afe 100644 --- a/Tools/c-analyzer/c_analyzer/common/files.py +++ b/Tools/c-analyzer/c_analyzer/common/files.py @@ -41,6 +41,8 @@ def walk_tree(root, *, def glob_tree(root, *, suffix=None, _glob=glob.iglob, + _escape=glob.escape, + _join=os.path.join, ): """Yield each file in the tree under the given directory name. @@ -51,9 +53,9 @@ def glob_tree(root, *, if not isinstance(suffix, str): raise ValueError('suffix must be a string') - for filename in _glob(f'{root}/*{suffix}'): + for filename in _glob(_join(_escape(root), f'*{suffix}')): yield filename - for filename in _glob(f'{root}/**/*{suffix}'): + for filename in _glob(_join(_escape(root), f'**/*{suffix}')): yield filename diff --git a/Tools/c-analyzer/check-c-globals.py b/Tools/c-analyzer/check-c-globals.py index e68ed92..1371f92 100644 --- a/Tools/c-analyzer/check-c-globals.py +++ b/Tools/c-analyzer/check-c-globals.py @@ -37,7 +37,9 @@ IGNORED_VARS = { def find_capi_vars(root): capi_vars = {} for dirname in SOURCE_DIRS: - for filename in glob.glob(os.path.join(ROOT_DIR, dirname, '**/*.[hc]'), + for filename in glob.glob(os.path.join( + glob.escape(os.path.join(ROOT_DIR, dirname)), + '**/*.[hc]'), recursive=True): with open(filename) as file: for name in _find_capi_vars(file): |