mirror of
https://github.com/python/cpython.git
synced 2025-10-07 07:31:46 +00:00
bpo-39567: Add audit for os.walk(), os.fwalk(), Path.glob() and Path.rglob(). (GH-18372)
This commit is contained in:
parent
95905ce0f4
commit
f4f445b693
3 changed files with 11 additions and 3 deletions
10
Lib/os.py
10
Lib/os.py
|
@ -336,7 +336,10 @@ def walk(top, topdown=True, onerror=None, followlinks=False):
|
|||
dirs.remove('CVS') # don't visit CVS directories
|
||||
|
||||
"""
|
||||
top = fspath(top)
|
||||
sys.audit("os.walk", top, topdown, onerror, followlinks)
|
||||
return _walk(fspath(top), topdown, onerror, followlinks)
|
||||
|
||||
def _walk(top, topdown, onerror, followlinks):
|
||||
dirs = []
|
||||
nondirs = []
|
||||
walk_dirs = []
|
||||
|
@ -410,11 +413,11 @@ def walk(top, topdown=True, onerror=None, followlinks=False):
|
|||
# the caller can replace the directory entry during the "yield"
|
||||
# above.
|
||||
if followlinks or not islink(new_path):
|
||||
yield from walk(new_path, topdown, onerror, followlinks)
|
||||
yield from _walk(new_path, topdown, onerror, followlinks)
|
||||
else:
|
||||
# Recurse into sub-directories
|
||||
for new_path in walk_dirs:
|
||||
yield from walk(new_path, topdown, onerror, followlinks)
|
||||
yield from _walk(new_path, topdown, onerror, followlinks)
|
||||
# Yield after recursion if going bottom up
|
||||
yield top, dirs, nondirs
|
||||
|
||||
|
@ -455,6 +458,7 @@ if {open, stat} <= supports_dir_fd and {scandir, stat} <= supports_fd:
|
|||
if 'CVS' in dirs:
|
||||
dirs.remove('CVS') # don't visit CVS directories
|
||||
"""
|
||||
sys.audit("os.fwalk", top, topdown, onerror, follow_symlinks, dir_fd)
|
||||
if not isinstance(top, int) or not hasattr(top, '__index__'):
|
||||
top = fspath(top)
|
||||
# Note: To guard against symlink races, we use the standard
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue