mirror of
https://github.com/python/cpython.git
synced 2025-11-25 04:34:37 +00:00
gh-57684: Add -P cmdline option and PYTHONSAFEPATH env var (#31542)
Add the -P command line option and the PYTHONSAFEPATH environment variable to not prepend a potentially unsafe path to sys.path. * Add sys.flags.safe_path flag. * Add PyConfig.safe_path member. * Programs/_bootstrap_python.c uses config.safe_path=0. * Update subprocess._optim_args_from_interpreter_flags() to handle the -P command line option. * Modules/getpath.py sets safe_path to 1 if a "._pth" file is present.
This commit is contained in:
parent
f6dd14c653
commit
ada8b6d1b1
20 changed files with 174 additions and 35 deletions
|
|
@ -579,13 +579,13 @@ class CmdLineTest(unittest.TestCase):
|
|||
'Cannot run -I tests when PYTHON env vars are required.')
|
||||
def test_isolatedmode(self):
|
||||
self.verify_valid_flag('-I')
|
||||
self.verify_valid_flag('-IEs')
|
||||
self.verify_valid_flag('-IEPs')
|
||||
rc, out, err = assert_python_ok('-I', '-c',
|
||||
'from sys import flags as f; '
|
||||
'print(f.no_user_site, f.ignore_environment, f.isolated)',
|
||||
'print(f.no_user_site, f.ignore_environment, f.isolated, f.safe_path)',
|
||||
# dummyvar to prevent extraneous -E
|
||||
dummyvar="")
|
||||
self.assertEqual(out.strip(), b'1 1 1')
|
||||
self.assertEqual(out.strip(), b'1 1 1 True')
|
||||
with os_helper.temp_cwd() as tmpdir:
|
||||
fake = os.path.join(tmpdir, "uuid.py")
|
||||
main = os.path.join(tmpdir, "main.py")
|
||||
|
|
@ -880,7 +880,8 @@ class IgnoreEnvironmentTest(unittest.TestCase):
|
|||
# Issue 31845: a startup refactoring broke reading flags from env vars
|
||||
expected_outcome = """
|
||||
(sys.flags.debug == sys.flags.optimize ==
|
||||
sys.flags.dont_write_bytecode == sys.flags.verbose == 0)
|
||||
sys.flags.dont_write_bytecode ==
|
||||
sys.flags.verbose == sys.flags.safe_path == 0)
|
||||
"""
|
||||
self.run_ignoring_vars(
|
||||
expected_outcome,
|
||||
|
|
@ -888,6 +889,7 @@ class IgnoreEnvironmentTest(unittest.TestCase):
|
|||
PYTHONOPTIMIZE="1",
|
||||
PYTHONDONTWRITEBYTECODE="1",
|
||||
PYTHONVERBOSE="1",
|
||||
PYTHONSAFEPATH="1",
|
||||
)
|
||||
|
||||
class SyntaxErrorTests(unittest.TestCase):
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue