New submission from Eryk Sun <[email protected]>:
pathlib._WindowsFlavour.resolve() mistakenly assume that os.getcwd() returns a
resolved path in Windows:
s = str(path)
if not s:
return os.getcwd()
I don't think this is a practical problem since `str(path)` should never be an
empty string. But if there is a concern that the result is an empty string, the
code should use `s = str(path) or '.'`, and resolve "." like any other relative
path.
In POSIX the result of getcwd() "shall contain no components that are dot or
dot-dot, or are symbolic links". In Windows, os.getcwd() calls WinAPI
GetCurrentDirectoryW(), which returns a fully-qualified path that may contain
symbolic components that would be resolved in a final path. This includes
filesystem symlinks and bind mounts (junctions), as well as mapped and
substitute drives (i.e. drives that resolve to a filesystem directory instead
of a volume device).
----------
components: Library (Lib), Windows
messages: 388393
nosy: eryksun, paul.moore, steve.dower, tim.golden, zach.ware
priority: normal
severity: normal
status: open
title: pathlib mistakenly assumes os.getcwd() is a resolved path in Windows
type: behavior
versions: Python 3.10, Python 3.8, Python 3.9
_______________________________________
Python tracker <[email protected]>
<https://bugs.python.org/issue43455>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com