mirror of
https://github.com/python/cpython.git
synced 2025-08-11 04:19:06 +00:00
Issue #13546: Fixed an overflow issue that could crash the intepreter when
calling sys.setrecursionlimit((1<<31)-1). 2.7 only.
This commit is contained in:
parent
a94b578431
commit
4bf21e28df
3 changed files with 19 additions and 2 deletions
|
@ -111,9 +111,11 @@ PyErr_GivenExceptionMatches(PyObject *err, PyObject *exc)
|
|||
PyErr_Fetch(&exception, &value, &tb);
|
||||
/* Temporarily bump the recursion limit, so that in the most
|
||||
common case PyObject_IsSubclass will not raise a recursion
|
||||
error we have to ignore anyway. */
|
||||
error we have to ignore anyway. Don't do it when the limit
|
||||
is already insanely high, to avoid overflow */
|
||||
reclimit = Py_GetRecursionLimit();
|
||||
Py_SetRecursionLimit(reclimit + 5);
|
||||
if (reclimit < (1 << 30))
|
||||
Py_SetRecursionLimit(reclimit + 5);
|
||||
res = PyObject_IsSubclass(err, exc);
|
||||
Py_SetRecursionLimit(reclimit);
|
||||
/* This function must not fail, so print the error here */
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue