From 6d6917be00942734fc8665a2398bd06087115729 Mon Sep 17 00:00:00 2001 From: "Michael W. Hudson" Date: Fri, 3 Jun 2005 15:17:16 +0000 Subject: Fix a couple of crashing-on-malformed data marshal bugs. --- Python/marshal.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/Python/marshal.c b/Python/marshal.c index 2535cb5..59aabac 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); -- cgit v0.12