Issue 1515471: wrong handling of character buffers in stringobject (original) (raw)
stringobject.c:
In string_replace, there is
if (PyString_Check(from)) {
/* Can this be made a '!check' after the Unicode
check? */ } #ifdef Py_USING_UNICODE if (PyUnicode_Check(from)) return PyUnicode_Replace((PyObject *)self, from, to, count); #endif else if (PyObject_AsCharBuffer(from, &tmp_s, &tmp_len)) return NULL;
[the same check with "to"]
return (PyObject *)replace((PyStringObject *) self,
(PyStringObject *) from,
(PyStringObject *) to, count);
This is not correct if from or to isn't a string object, but a char buffer compatible object.