Fix segfault when doing string formatting on subclasses of long if

__oct__, __hex__ don't return a string.

Klocwork 308
This commit is contained in:
Neal Norwitz 2006-08-13 18:11:08 +00:00
parent 3cb31ac704
commit 56423e5762
3 changed files with 14 additions and 1 deletions

View file

@ -4225,12 +4225,15 @@ _PyString_FormatLong(PyObject *val, int flags, int prec, int type,
if (!result)
return NULL;
buf = PyString_AsString(result);
if (!buf)
return NULL;
/* To modify the string in-place, there can only be one reference. */
if (result->ob_refcnt != 1) {
PyErr_BadInternalCall();
return NULL;
}
buf = PyString_AsString(result);
llen = PyString_Size(result);
if (llen > PY_SSIZE_T_MAX) {
PyErr_SetString(PyExc_ValueError, "string too large in _PyString_FormatLong");