From 9bc16742d7f31efd14be63e71ada49b6e8793e13 Mon Sep 17 00:00:00 2001 From: barneygale Date: Thu, 8 Apr 2021 13:42:48 +0100 Subject: [PATCH] ntpath.expanduser(): don't check the basename of the directory matches the username if we're requesting the current user's home directory --- Lib/ntpath.py | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/Lib/ntpath.py b/Lib/ntpath.py index 421db50a3b7f56..5ae8079074cd91 100644 --- a/Lib/ntpath.py +++ b/Lib/ntpath.py @@ -313,18 +313,19 @@ def expanduser(path): userhome = join(drive, os.environ['HOMEPATH']) if i != 1: #~user - # Try to guess user home directory. By default all users directories - # are located in the same place and are named by corresponding - # usernames. If current user home directory points to nonstandard - # place, this guess is likely wrong, and so we bail out. - current_user = os.environ.get('USERNAME') - if current_user != basename(userhome): - return path - target_user = path[1:i] if isinstance(target_user, bytes): target_user = os.fsdecode(target_user) + current_user = os.environ.get('USERNAME') + if target_user != current_user: + # Try to guess user home directory. By default all user + # profile directories are located in the same place and are + # named by corresponding usernames. If userhome isn't a + # normal profile directory, this guess is likely wrong, + # so we bail out. + if current_user != basename(userhome): + return path userhome = join(dirname(userhome), target_user) if isinstance(path, bytes):