https://github.com/python/cpython/commit/94591dca510c796c7d40e9b4167ea56f2fdf28ca
commit: 94591dca510c796c7d40e9b4167ea56f2fdf28ca
branch: main
author: Steve Dower <[email protected]>
committer: zooba <[email protected]>
date: 2024-05-15T11:59:41+01:00
summary:
gh-118486: Simplify test_win32_mkdir_700 to check the exact ACL (GH-119056)
files:
M Lib/test/test_os.py
M Modules/posixmodule.c
diff --git a/Lib/test/test_os.py b/Lib/test/test_os.py
index 9088318600f4c0..941fa2b2c5c87f 100644
--- a/Lib/test/test_os.py
+++ b/Lib/test/test_os.py
@@ -1814,21 +1814,14 @@ def test_exist_ok_existing_regular_file(self):
@unittest.skipUnless(os.name == 'nt', "requires Windows")
def test_win32_mkdir_700(self):
base = os_helper.TESTFN
- path1 = os.path.join(os_helper.TESTFN, 'dir1')
- path2 = os.path.join(os_helper.TESTFN, 'dir2')
- # mode=0o700 is special-cased to override ACLs on Windows
- # There's no way to know exactly how the ACLs will look, so we'll
- # check that they are different from a regularly created directory.
- os.mkdir(path1, mode=0o700)
- os.mkdir(path2, mode=0o777)
-
- out1 = subprocess.check_output(["icacls.exe", path1], encoding="oem")
- out2 = subprocess.check_output(["icacls.exe", path2], encoding="oem")
- os.rmdir(path1)
- os.rmdir(path2)
- out1 = out1.replace(path1, "<PATH>")
- out2 = out2.replace(path2, "<PATH>")
- self.assertNotEqual(out1, out2)
+ path = os.path.abspath(os.path.join(os_helper.TESTFN, 'dir'))
+ os.mkdir(path, mode=0o700)
+ out = subprocess.check_output(["cacls.exe", path, "/s"],
encoding="oem")
+ os.rmdir(path)
+ self.assertEqual(
+ out.strip(),
+ f'{path} "D:P(A;OICI;FA;;;SY)(A;OICI;FA;;;BA)(A;OICI;FA;;;OW)"',
+ )
def tearDown(self):
path = os.path.join(os_helper.TESTFN, 'dir1', 'dir2', 'dir3',
diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c
index 5fe6036b3817e4..710a171580a438 100644
--- a/Modules/posixmodule.c
+++ b/Modules/posixmodule.c
@@ -5590,7 +5590,7 @@ os_mkdir_impl(PyObject *module, path_t *path, int mode,
int dir_fd)
if (mode == 0700 /* 0o700 */) {
ULONG sdSize;
pSecAttr = &secAttr;
- // Set a discreationary ACL (D) that is protected (P) and includes
+ // Set a discretionary ACL (D) that is protected (P) and includes
// inheritable (OICI) entries that allow (A) full control (FA) to
// SYSTEM (SY), Administrators (BA), and the owner (OW).
if (!ConvertStringSecurityDescriptorToSecurityDescriptorW(
_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3/lists/python-checkins.python.org/
Member address: [email protected]