Add some missing NULL checks which trigger crashes on low-memory conditions.
Found by Victor Stinner. Will backport when 2.5 branch is unfrozen.
diff --git a/Objects/longobject.c b/Objects/longobject.c
index 6b8d6e4..6d55354 100644
--- a/Objects/longobject.c
+++ b/Objects/longobject.c
@@ -1739,6 +1739,8 @@
a->ob_digit[size_a-1] < b->ob_digit[size_b-1])) {
/* |a| < |b|. */
*pdiv = _PyLong_New(0);
+ if (*pdiv == NULL)
+ return -1;
Py_INCREF(a);
*prem = (PyLongObject *) a;
return 0;
@@ -1749,6 +1751,10 @@
if (z == NULL)
return -1;
*prem = (PyLongObject *) PyLong_FromLong((long)rem);
+ if (*prem == NULL) {
+ Py_DECREF(z);
+ return -1;
+ }
}
else {
z = x_divrem(a, b, prem);
@@ -3204,6 +3210,8 @@
{
if (PyInt_Check(*pw)) {
*pw = PyLong_FromLong(PyInt_AS_LONG(*pw));
+ if (*pw == NULL)
+ return -1;
Py_INCREF(*pv);
return 0;
}