Add some missing NULL checks which trigger crashes on low-memory conditions.
Found by Victor Stinner. Will backport when 2.5 branch is unfrozen.
This commit is contained in:
parent
5bf02cd17f
commit
c02e13122b
|
@ -33,6 +33,8 @@ BaseException_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
|
||||||
PyBaseExceptionObject *self;
|
PyBaseExceptionObject *self;
|
||||||
|
|
||||||
self = (PyBaseExceptionObject *)type->tp_alloc(type, 0);
|
self = (PyBaseExceptionObject *)type->tp_alloc(type, 0);
|
||||||
|
if (!self)
|
||||||
|
return NULL;
|
||||||
/* the dict is created on the fly in PyObject_GenericSetAttr */
|
/* the dict is created on the fly in PyObject_GenericSetAttr */
|
||||||
self->message = self->dict = NULL;
|
self->message = self->dict = NULL;
|
||||||
|
|
||||||
|
|
|
@ -1739,6 +1739,8 @@ long_divrem(PyLongObject *a, PyLongObject *b,
|
||||||
a->ob_digit[size_a-1] < b->ob_digit[size_b-1])) {
|
a->ob_digit[size_a-1] < b->ob_digit[size_b-1])) {
|
||||||
/* |a| < |b|. */
|
/* |a| < |b|. */
|
||||||
*pdiv = _PyLong_New(0);
|
*pdiv = _PyLong_New(0);
|
||||||
|
if (*pdiv == NULL)
|
||||||
|
return -1;
|
||||||
Py_INCREF(a);
|
Py_INCREF(a);
|
||||||
*prem = (PyLongObject *) a;
|
*prem = (PyLongObject *) a;
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -1749,6 +1751,10 @@ long_divrem(PyLongObject *a, PyLongObject *b,
|
||||||
if (z == NULL)
|
if (z == NULL)
|
||||||
return -1;
|
return -1;
|
||||||
*prem = (PyLongObject *) PyLong_FromLong((long)rem);
|
*prem = (PyLongObject *) PyLong_FromLong((long)rem);
|
||||||
|
if (*prem == NULL) {
|
||||||
|
Py_DECREF(z);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
z = x_divrem(a, b, prem);
|
z = x_divrem(a, b, prem);
|
||||||
|
@ -3204,6 +3210,8 @@ long_coerce(PyObject **pv, PyObject **pw)
|
||||||
{
|
{
|
||||||
if (PyInt_Check(*pw)) {
|
if (PyInt_Check(*pw)) {
|
||||||
*pw = PyLong_FromLong(PyInt_AS_LONG(*pw));
|
*pw = PyLong_FromLong(PyInt_AS_LONG(*pw));
|
||||||
|
if (*pw == NULL)
|
||||||
|
return -1;
|
||||||
Py_INCREF(*pv);
|
Py_INCREF(*pv);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue