mirror of
https://github.com/python/cpython.git
synced 2025-07-12 13:55:34 +00:00
[3.11] gh-114539: Clarify implicit launching of shells by subprocess (GH-117996) (#118003)
Co-authored-by: Steve Dower <steve.dower@python.org>
This commit is contained in:
parent
c5655aa6ad
commit
b39636047b
1 changed files with 10 additions and 2 deletions
|
@ -756,8 +756,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
|
||||
|
@ -766,6 +766,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
|
||||
-------------
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue