Closed
Description
Bug report
Bug description:
Found when implementing #123343. We have:
int
PyUnicodeEncodeError_GetStart(PyObject *exc, Py_ssize_t *start)
{
Py_ssize_t size;
PyObject *obj = get_unicode(((PyUnicodeErrorObject *)exc)->object,
"object");
if (!obj)
return -1;
*start = ((PyUnicodeErrorObject *)exc)->start;
size = PyUnicode_GET_LENGTH(obj);
if (*start<0)
*start = 0; /*XXX check for values <0*/
if (*start>=size)
*start = size-1;
Py_DECREF(obj);
return 0;
}
The line *start = size-1
might set start
to -1
when start = 0
, in which case this leads to assertion failures when the index is used normally.
CPython versions tested on:
CPython main branch
Operating systems tested on:
Linux
Linked PRs
- gh-123378: fix a crash in
UnicodeError.__str__
#124935 - [3.12] gh-123378: fix a crash in
UnicodeError.__str__
(GH-124935) #125098 - [3.13] gh-123378: fix a crash in
UnicodeError.__str__
(GH-124935) #125099 - gh-123378: fix some corner cases of
start
andend
values inPyUnicodeErrorObject
#123380 - gh-123378: fix post-merge typos in comments and NEWS #127739
Metadata
Metadata
Assignees
Labels
Projects
Status
Done