From: Michael W. Hudson Date: Fri, 3 Jun 2005 15:17:16 +0000 (+0000) Subject: Fix a couple of crashing-on-malformed data marshal bugs. X-Git-Tag: v2.5a0~1748 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=6d6917be00942734fc8665a2398bd06087115729;p=thirdparty%2FPython%2Fcpython.git Fix a couple of crashing-on-malformed data marshal bugs. --- diff --git a/Python/marshal.c b/Python/marshal.c index 2535cb5514ff..59aabacabf4d 100644 --- a/Python/marshal.c +++ b/Python/marshal.c @@ -632,13 +632,13 @@ r_object(RFILE *p) return NULL; } v = PyString_FromStringAndSize((char *)NULL, n); - if (v != NULL) { - if (r_string(PyString_AS_STRING(v), (int)n, p) != n) { - Py_DECREF(v); - v = NULL; - PyErr_SetString(PyExc_EOFError, + if (v == NULL) + return v; + if (r_string(PyString_AS_STRING(v), (int)n, p) != n) { + Py_DECREF(v); + PyErr_SetString(PyExc_EOFError, "EOF read where object expected"); - } + return NULL; } if (type == TYPE_INTERNED) { PyString_InternInPlace(&v); @@ -766,6 +766,8 @@ r_object(RFILE *p) } PyTuple_SET_ITEM(v, (int)i, v2); } + if (v == NULL) + return v; if (type == TYPE_SET) v3 = PyObject_CallFunctionObjArgs( (PyObject *)&PySet_Type, v, NULL);