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.