Bug report
Reproduction:
>>> import _sre
>>> _sre.compile('', 0, ['abc'], 0, {}, ())
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
OverflowError: regular expression code size limit exceeded
It should be:
>>> import _sre
>>> _sre.compile('', 0, ['abc'], 0, {}, ())
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: an integer is required
Because the third arg is code: object(subclass_of='&PyList_Type'), it is assumed to be integers inside.
Problematic lines:
|
unsigned long value = PyLong_AsUnsignedLong(o); |
|
self->code[i] = (SRE_CODE) value; |
|
if ((unsigned long) self->code[i] != value) { |
|
PyErr_SetString(PyExc_OverflowError, |
|
"regular expression code size limit exceeded"); |
|
break; |
They do not check for PyLong_AsUnsignedLong errors.
I have a PR ready :)
Linked PRs
Bug report
Reproduction:
It should be:
Because the third arg is
code: object(subclass_of='&PyList_Type'), it is assumed to be integers inside.Problematic lines:
cpython/Modules/_sre/sre.c
Lines 1510 to 1515 in def7ea5
They do not check for
PyLong_AsUnsignedLongerrors.I have a PR ready :)
Linked PRs
_sre.compileerror overwrite #110591