Commit 50d3919f authored by Georg Brandl's avatar Georg Brandl

Add some missing NULL checks which trigger crashes on low-memory conditions.

Found by Victor Stinner. Will backport when 2.5 branch is unfrozen.
parent 02e48d46
...@@ -33,6 +33,8 @@ BaseException_new(PyTypeObject *type, PyObject *args, PyObject *kwds) ...@@ -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, ...@@ -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, ...@@ -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) ...@@ -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;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment