mirror of
https://github.com/python/cpython.git
synced 2026-06-05 01:10:53 +00:00
gh-149879: Fix test_tarfile on Cygwin (#149897)
On Cygwin, there is no root user (uid 0). Fix test_realpath_limit_attack(): the test fails with ELOOP on Cygwin.
This commit is contained in:
parent
d9ad171ced
commit
c92ef3a6de
1 changed files with 10 additions and 2 deletions
|
|
@ -3205,7 +3205,11 @@ def root_is_uid_gid_0():
|
|||
import pwd, grp
|
||||
except ImportError:
|
||||
return False
|
||||
if pwd.getpwuid(0)[0] != 'root':
|
||||
try:
|
||||
if pwd.getpwuid(0)[0] != 'root':
|
||||
return False
|
||||
except KeyError:
|
||||
# On Cygwin, there is no root user (uid 0)
|
||||
return False
|
||||
if grp.getgrgid(0)[0] != 'root':
|
||||
return False
|
||||
|
|
@ -3985,6 +3989,9 @@ def test_realpath_limit_attack(self):
|
|||
check_flag=False)):
|
||||
if sys.platform == 'win32':
|
||||
self.expect_exception((FileNotFoundError, FileExistsError))
|
||||
elif sys.platform == 'cygwin':
|
||||
exc = self.expect_exception(OSError)
|
||||
self.assertEqual(exc.errno, errno.ELOOP)
|
||||
elif self.raised_exception:
|
||||
# Cannot symlink/hardlink: tarfile falls back to getmember()
|
||||
self.expect_exception(KeyError)
|
||||
|
|
@ -4006,7 +4013,8 @@ def test_realpath_limit_attack(self):
|
|||
# 206: ERROR_FILENAME_EXCED_RANGE
|
||||
self.assertIn(exc.winerror, (3, 5, 206))
|
||||
else:
|
||||
self.assertEqual(exc.errno, errno.ENAMETOOLONG)
|
||||
self.assertIn(exc.errno,
|
||||
(errno.ENAMETOOLONG, errno.ELOOP))
|
||||
|
||||
@symlink_test
|
||||
def test_parent_symlink2(self):
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue