mirror of
https://github.com/python/cpython.git
synced 2025-11-01 06:01:29 +00:00
Issue #22518: Fixed integer overflow issues in "backslashreplace",
"xmlcharrefreplace", and "surrogatepass" error handlers.
This commit is contained in:
parent
76e73f85a3
commit
4b1681832b
2 changed files with 9 additions and 2 deletions
|
|
@ -727,7 +727,7 @@ PyObject *PyCodec_XMLCharRefReplaceErrors(PyObject *exc)
|
|||
Py_ssize_t end;
|
||||
PyObject *res;
|
||||
unsigned char *outp;
|
||||
int ressize;
|
||||
Py_ssize_t ressize;
|
||||
Py_UCS4 ch;
|
||||
if (PyUnicodeEncodeError_GetStart(exc, &start))
|
||||
return NULL;
|
||||
|
|
@ -735,6 +735,8 @@ PyObject *PyCodec_XMLCharRefReplaceErrors(PyObject *exc)
|
|||
return NULL;
|
||||
if (!(object = PyUnicodeEncodeError_GetObject(exc)))
|
||||
return NULL;
|
||||
if (end - start > PY_SSIZE_T_MAX / (2+7+1))
|
||||
end = start + PY_SSIZE_T_MAX / (2+7+1);
|
||||
for (i = start, ressize = 0; i < end; ++i) {
|
||||
/* object is guaranteed to be "ready" */
|
||||
ch = PyUnicode_READ_CHAR(object, i);
|
||||
|
|
@ -823,7 +825,7 @@ PyObject *PyCodec_BackslashReplaceErrors(PyObject *exc)
|
|||
Py_ssize_t end;
|
||||
PyObject *res;
|
||||
unsigned char *outp;
|
||||
int ressize;
|
||||
Py_ssize_t ressize;
|
||||
Py_UCS4 c;
|
||||
if (PyUnicodeEncodeError_GetStart(exc, &start))
|
||||
return NULL;
|
||||
|
|
@ -831,6 +833,8 @@ PyObject *PyCodec_BackslashReplaceErrors(PyObject *exc)
|
|||
return NULL;
|
||||
if (!(object = PyUnicodeEncodeError_GetObject(exc)))
|
||||
return NULL;
|
||||
if (end - start > PY_SSIZE_T_MAX / (1+1+8))
|
||||
end = start + PY_SSIZE_T_MAX / (1+1+8);
|
||||
for (i = start, ressize = 0; i < end; ++i) {
|
||||
/* object is guaranteed to be "ready" */
|
||||
c = PyUnicode_READ_CHAR(object, i);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue