From 8feeabb975f416a8cc8bc44d466982da44cf0f54 Mon Sep 17 00:00:00 2001 From: Neal Norwitz Date: Wed, 18 Dec 2002 23:20:39 +0000 Subject: [PATCH] SF # 654974, fix unchecked return values in structseq Check return values after memory allocation. Also use Py_True instead of PyInt_FromLong(1) for bool value. Backport candidate. --- Objects/structseq.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/Objects/structseq.c b/Objects/structseq.c index e14e4ca0f6..effe360c1e 100644 --- a/Objects/structseq.c +++ b/Objects/structseq.c @@ -150,6 +150,9 @@ structseq_new(PyTypeObject *type, PyObject *args, PyObject *kwds) } res = (PyStructSequence*) PyStructSequence_New(type); + if (res == NULL) { + return NULL; + } for (i = 0; i < len; ++i) { PyObject *v = PySequence_Fast_GET_ITEM(arg, i); Py_INCREF(v); @@ -360,6 +363,8 @@ PyStructSequence_InitType(PyTypeObject *type, PyStructSequence_Desc *desc) type->tp_itemsize = 0; members = PyMem_NEW(PyMemberDef, n_members-n_unnamed_members+1); + if (members == NULL) + return; for (i = k = 0; i < n_members; ++i) { if (desc->fields[i].name == PyStructSequence_UnnamedField) @@ -387,6 +392,5 @@ PyStructSequence_InitType(PyTypeObject *type, PyStructSequence_Desc *desc) PyInt_FromLong((long) n_members)); PyDict_SetItemString(dict, unnamed_fields_key, PyInt_FromLong((long) n_unnamed_members)); - PyDict_SetItemString(dict, "__safe_for_unpickling__", - PyInt_FromLong(1)); + PyDict_SetItemString(dict, "__safe_for_unpickling__", Py_True); } -- 2.40.0