From 0a7697b718898f4ebc17ba261b786502a03ed738 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kristj=C3=A1n=20Valur=20J=C3=B3nsson?= Date: Sun, 13 Oct 2013 15:19:56 +0000 Subject: Catch a few extra error cases in marshal.c --- Python/marshal.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Python/marshal.c b/Python/marshal.c index 987d063..7273e7c 100644 --- a/Python/marshal.c +++ b/Python/marshal.c @@ -1297,6 +1297,8 @@ r_object(RFILE *p) if (name == NULL) goto code_error; firstlineno = (int)r_long(p); + if (firstlineno == -1 && PyErr_Occurred()) + break; lnotab = r_object(p); if (lnotab == NULL) goto code_error; @@ -1326,6 +1328,8 @@ r_object(RFILE *p) case TYPE_REF: n = r_long(p); if (n < 0 || n >= PyList_GET_SIZE(p->refs)) { + if (n == -1 && PyErr_Occurred()) + break; PyErr_SetString(PyExc_ValueError, "bad marshal data (invalid reference)"); break; } -- cgit v0.12