[3.9] Correct CVE-2020-10735 documentation (GH-100306). (#100697)

(cherry picked from commit 1cf3d78c92)
(cherry picked from commit 88fe8d701a)

Co-authored-by: Jeremy Paige <ucodery@gmail.com>
Co-authored-by: Gregory P. Smith <greg@krypto.org>
This commit is contained in:
Gregory P. Smith 2023-01-20 14:20:32 -08:00 committed by GitHub
parent 5ef90eebfd
commit cf71e19297
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 7 additions and 7 deletions

View file

@ -5254,7 +5254,7 @@ to mitigate denial of service attacks. This limit *only* applies to decimal or
other non-power-of-two number bases. Hexadecimal, octal, and binary conversions other non-power-of-two number bases. Hexadecimal, octal, and binary conversions
are unlimited. The limit can be configured. are unlimited. The limit can be configured.
The :class:`int` type in CPython is an abitrary length number stored in binary The :class:`int` type in CPython is an arbitrary length number stored in binary
form (commonly known as a "bignum"). There exists no algorithm that can convert form (commonly known as a "bignum"). There exists no algorithm that can convert
a string to a binary integer or a binary integer to a string in linear time, a string to a binary integer or a binary integer to a string in linear time,
*unless* the base is a power of 2. Even the best known algorithms for base 10 *unless* the base is a power of 2. Even the best known algorithms for base 10
@ -5318,7 +5318,7 @@ and :class:`str` or :class:`bytes`:
* ``int(string)`` with default base 10. * ``int(string)`` with default base 10.
* ``int(string, base)`` for all bases that are not a power of 2. * ``int(string, base)`` for all bases that are not a power of 2.
* ``str(integer)``. * ``str(integer)``.
* ``repr(integer)`` * ``repr(integer)``.
* any other string conversion to base 10, for example ``f"{integer}"``, * any other string conversion to base 10, for example ``f"{integer}"``,
``"{}".format(integer)``, or ``b"%d" % integer``. ``"{}".format(integer)``, or ``b"%d" % integer``.
@ -5346,7 +5346,7 @@ command line flag to configure the limit:
:envvar:`PYTHONINTMAXSTRDIGITS` or :option:`-X int_max_str_digits <-X>`. :envvar:`PYTHONINTMAXSTRDIGITS` or :option:`-X int_max_str_digits <-X>`.
If both the env var and the ``-X`` option are set, the ``-X`` option takes If both the env var and the ``-X`` option are set, the ``-X`` option takes
precedence. A value of *-1* indicates that both were unset, thus a value of precedence. A value of *-1* indicates that both were unset, thus a value of
:data:`sys.int_info.default_max_str_digits` was used during initilization. :data:`sys.int_info.default_max_str_digits` was used during initialization.
From code, you can inspect the current limit and set a new one using these From code, you can inspect the current limit and set a new one using these
:mod:`sys` APIs: :mod:`sys` APIs:

View file

@ -671,7 +671,7 @@ PyDoc_STRVAR(sys_get_int_max_str_digits__doc__,
"get_int_max_str_digits($module, /)\n" "get_int_max_str_digits($module, /)\n"
"--\n" "--\n"
"\n" "\n"
"Set the maximum string digits limit for non-binary int<->str conversions."); "Return the maximum string digits limit for non-binary int<->str conversions.");
#define SYS_GET_INT_MAX_STR_DIGITS_METHODDEF \ #define SYS_GET_INT_MAX_STR_DIGITS_METHODDEF \
{"get_int_max_str_digits", (PyCFunction)sys_get_int_max_str_digits, METH_NOARGS, sys_get_int_max_str_digits__doc__}, {"get_int_max_str_digits", (PyCFunction)sys_get_int_max_str_digits, METH_NOARGS, sys_get_int_max_str_digits__doc__},
@ -1028,4 +1028,4 @@ sys_getandroidapilevel(PyObject *module, PyObject *Py_UNUSED(ignored))
#ifndef SYS_GETANDROIDAPILEVEL_METHODDEF #ifndef SYS_GETANDROIDAPILEVEL_METHODDEF
#define SYS_GETANDROIDAPILEVEL_METHODDEF #define SYS_GETANDROIDAPILEVEL_METHODDEF
#endif /* !defined(SYS_GETANDROIDAPILEVEL_METHODDEF) */ #endif /* !defined(SYS_GETANDROIDAPILEVEL_METHODDEF) */
/*[clinic end generated code: output=401254a595859ac6 input=a9049054013a1b77]*/ /*[clinic end generated code: output=97a4176745dbbe79 input=a9049054013a1b77]*/

View file

@ -1643,12 +1643,12 @@ sys_mdebug_impl(PyObject *module, int flag)
/*[clinic input] /*[clinic input]
sys.get_int_max_str_digits sys.get_int_max_str_digits
Set the maximum string digits limit for non-binary int<->str conversions. Return the maximum string digits limit for non-binary int<->str conversions.
[clinic start generated code]*/ [clinic start generated code]*/
static PyObject * static PyObject *
sys_get_int_max_str_digits_impl(PyObject *module) sys_get_int_max_str_digits_impl(PyObject *module)
/*[clinic end generated code: output=0042f5e8ae0e8631 input=8dab13e2023e60d5]*/ /*[clinic end generated code: output=0042f5e8ae0e8631 input=61bf9f99bc8b112d]*/
{ {
PyInterpreterState *interp = _PyInterpreterState_GET(); PyInterpreterState *interp = _PyInterpreterState_GET();
return PyLong_FromSsize_t(interp->int_max_str_digits); return PyLong_FromSsize_t(interp->int_max_str_digits);