mirror of
https://github.com/python/cpython.git
synced 2025-09-26 18:29:57 +00:00
merge 3.3 (#19098)
This commit is contained in:
commit
c30d05855a
2 changed files with 9 additions and 2 deletions
|
@ -9,6 +9,9 @@ Core and Builtins
|
||||||
|
|
||||||
- Issue #18818: The "encodingname" part of PYTHONIOENCODING is now optional.
|
- Issue #18818: The "encodingname" part of PYTHONIOENCODING is now optional.
|
||||||
|
|
||||||
|
- Issue #19098: Prevent overflow in the compiler when the recursion limit is set
|
||||||
|
absurbly high.
|
||||||
|
|
||||||
Library
|
Library
|
||||||
-------
|
-------
|
||||||
|
|
||||||
|
|
|
@ -239,6 +239,7 @@ PySymtable_BuildObject(mod_ty mod, PyObject *filename, PyFutureFeatures *future)
|
||||||
asdl_seq *seq;
|
asdl_seq *seq;
|
||||||
int i;
|
int i;
|
||||||
PyThreadState *tstate;
|
PyThreadState *tstate;
|
||||||
|
int recursion_limit = Py_GetRecursionLimit();
|
||||||
|
|
||||||
if (st == NULL)
|
if (st == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -256,8 +257,11 @@ PySymtable_BuildObject(mod_ty mod, PyObject *filename, PyFutureFeatures *future)
|
||||||
PySymtable_Free(st);
|
PySymtable_Free(st);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
st->recursion_depth = tstate->recursion_depth * COMPILER_STACK_FRAME_SCALE;
|
/* Be careful here to prevent overflow. */
|
||||||
st->recursion_limit = Py_GetRecursionLimit() * COMPILER_STACK_FRAME_SCALE;
|
st->recursion_depth = (tstate->recursion_depth < INT_MAX / COMPILER_STACK_FRAME_SCALE) ?
|
||||||
|
tstate->recursion_depth * COMPILER_STACK_FRAME_SCALE : tstate->recursion_depth;
|
||||||
|
st->recursion_limit = (recursion_limit < INT_MAX / COMPILER_STACK_FRAME_SCALE) ?
|
||||||
|
recursion_limit * COMPILER_STACK_FRAME_SCALE : recursion_limit;
|
||||||
|
|
||||||
/* Make the initial symbol information gathering pass */
|
/* Make the initial symbol information gathering pass */
|
||||||
if (!GET_IDENTIFIER(top) ||
|
if (!GET_IDENTIFIER(top) ||
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue