Backport 55874:

Fix a bug when there was a newline in the string expandtabs was called on.
This also catches another condition that can overflow.
This commit is contained in:
Neal Norwitz 2007-06-11 04:32:41 +00:00
parent 11c5275c61
commit 8355dd5806
3 changed files with 21 additions and 4 deletions

View file

@ -5701,7 +5701,8 @@ unicode_expandtabs(PyUnicodeObject *self, PyObject *args)
if (tabsize > 0) {
j += tabsize - (j % tabsize);
if (old_j > j) {
PyErr_SetString(PyExc_OverflowError, "new string is too long");
PyErr_SetString(PyExc_OverflowError,
"new string is too long");
return NULL;
}
old_j = j;
@ -5711,7 +5712,12 @@ unicode_expandtabs(PyUnicodeObject *self, PyObject *args)
j++;
if (*p == '\n' || *p == '\r') {
i += j;
j = 0;
old_j = j = 0;
if (i < 0) {
PyErr_SetString(PyExc_OverflowError,
"new string is too long");
return NULL;
}
}
}