@@ -666,8 +666,8 @@ Exceptions defined in this module all inherit from :exc:`SubprocessError`.
666666Security Considerations
667667-----------------------
668668
669- Unlike some other popen functions, this implementation will never
670- implicitly call a system shell. This means that all characters,
669+ Unlike some other popen functions, this library will not
670+ implicitly choose to call a system shell. This means that all characters,
671671including shell metacharacters, can safely be passed to child processes.
672672If the shell is invoked explicitly, via ``shell=True ``, it is the application's
673673responsibility to ensure that all whitespace and metacharacters are
@@ -679,6 +679,14 @@ When using ``shell=True``, the :func:`shlex.quote` function can be
679679used to properly escape whitespace and shell metacharacters in strings
680680that are going to be used to construct shell commands.
681681
682+ On Windows, batch files (:file: `*.bat ` or :file: `*.cmd `) may be launched by the
683+ operating system in a system shell regardless of the arguments passed to this
684+ library. This could result in arguments being parsed according to shell rules,
685+ but without any escaping added by Python. If you are intentionally launching a
686+ batch file with arguments from untrusted sources, consider passing
687+ ``shell=True `` to allow Python to escape special characters. See :gh: `114539 `
688+ for additional discussion.
689+
682690
683691Popen Objects
684692-------------
0 commit comments