]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
[3.13] gh-118633: Add warning regarding the unsafe usage of eval and exec (GH-118437...
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>
Wed, 30 Oct 2024 00:49:18 +0000 (01:49 +0100)
committerGitHub <noreply@github.com>
Wed, 30 Oct 2024 00:49:18 +0000 (00:49 +0000)
gh-118633: Add warning regarding the unsafe usage of eval and exec (GH-118437)

* Add warning regarding the unsafe usage of eval

* Add warning regarding the unsafe usage of exec

* Move warning under parameters table

* Use suggested shorter text

* Use suggested shorter text

* Improve wording as suggested

---------

(cherry picked from commit 00e5ec0d35193c1665e5c0cfe5ef82eed270d0f4)

Co-authored-by: Daniel Ruf <daniel@daniel-ruf.de>
Co-authored-by: Kirill Podoprigora <kirill.bast9@mail.ru>
Co-authored-by: Jelle Zijlstra <jelle.zijlstra@gmail.com>
Doc/library/functions.rst

index e388cbb5b6fce3a7274827af3bac05e4f18c7755..5f1429a458eb243192f9c1d3e83be66820be4d68 100644 (file)
@@ -588,6 +588,11 @@ are always available.  They are listed here in alphabetical order.
    :returns: The result of the evaluated expression.
    :raises: Syntax errors are reported as exceptions.
 
+   .. warning::
+
+      This function executes arbitrary code. Calling it with
+      user-supplied input may lead to security vulnerabilities.
+
    The *expression* argument is parsed and evaluated as a Python expression
    (technically speaking, a condition list) using the *globals* and *locals*
    mappings as global and local namespace.  If the *globals* dictionary is
@@ -644,6 +649,11 @@ are always available.  They are listed here in alphabetical order.
 
 .. function:: exec(source, /, globals=None, locals=None, *, closure=None)
 
+   .. warning::
+
+      This function executes arbitrary code. Calling it with
+      user-supplied input may lead to security vulnerabilities.
+
    This function supports dynamic execution of Python code. *source* must be
    either a string or a code object.  If it is a string, the string is parsed as
    a suite of Python statements which is then executed (unless a syntax error