diff options
author | Steve Dower <steve.dower@python.org> | 2024-04-17 18:32:47 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-04-17 18:32:47 (GMT) |
commit | a4b44d39cd6941cc03590fee7538776728bdfd0a (patch) | |
tree | 8be8491133127076b0d9acde0fd9e9c24b11ee1a | |
parent | 353ea0b273b389e075b2ac9687d3e27467b893cd (diff) | |
download | cpython-a4b44d39cd6941cc03590fee7538776728bdfd0a.zip cpython-a4b44d39cd6941cc03590fee7538776728bdfd0a.tar.gz cpython-a4b44d39cd6941cc03590fee7538776728bdfd0a.tar.bz2 |
gh-114539: Clarify implicit launching of shells by subprocess (GH-117996)
-rw-r--r-- | Doc/library/subprocess.rst | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/Doc/library/subprocess.rst b/Doc/library/subprocess.rst index 49194b8..1cd2331 100644 --- a/Doc/library/subprocess.rst +++ b/Doc/library/subprocess.rst @@ -754,8 +754,8 @@ Exceptions defined in this module all inherit from :exc:`SubprocessError`. Security Considerations ----------------------- -Unlike some other popen functions, this implementation will never -implicitly call a system shell. This means that all characters, +Unlike some other popen functions, this library will not +implicitly choose to call a system shell. This means that all characters, including shell metacharacters, can safely be passed to child processes. If the shell is invoked explicitly, via ``shell=True``, it is the application's responsibility to ensure that all whitespace and metacharacters are @@ -764,6 +764,14 @@ quoted appropriately to avoid vulnerabilities. On :ref:`some platforms <shlex-quote-warning>`, it is possible to use :func:`shlex.quote` for this escaping. +On Windows, batch files (:file:`*.bat` or :file:`*.cmd`) may be launched by the +operating system in a system shell regardless of the arguments passed to this +library. This could result in arguments being parsed according to shell rules, +but without any escaping added by Python. If you are intentionally launching a +batch file with arguments from untrusted sources, consider passing +``shell=True`` to allow Python to escape special characters. See :gh:`114539` +for additional discussion. + Popen Objects ------------- |