mirror of
https://github.com/python/cpython.git
synced 2025-08-04 00:48:58 +00:00
[3.9] Correct CVE-2020-10735 documentation (GH-100306). (#100697)
(cherry picked from commit1cf3d78c92
) (cherry picked from commit88fe8d701a
) Co-authored-by: Jeremy Paige <ucodery@gmail.com> Co-authored-by: Gregory P. Smith <greg@krypto.org>
This commit is contained in:
parent
5ef90eebfd
commit
cf71e19297
3 changed files with 7 additions and 7 deletions
|
@ -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:
|
||||||
|
|
4
Python/clinic/sysmodule.c.h
generated
4
Python/clinic/sysmodule.c.h
generated
|
@ -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]*/
|
||||||
|
|
|
@ -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);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue