]> granicus.if.org Git - python/commitdiff
Catch a few extra error cases in marshal.c
authorKristján Valur Jónsson <kristjan@ccpgames.com>
Sun, 13 Oct 2013 15:19:56 +0000 (15:19 +0000)
committerKristján Valur Jónsson <kristjan@ccpgames.com>
Sun, 13 Oct 2013 15:19:56 +0000 (15:19 +0000)
Python/marshal.c

index 987d063f2741a000d90ff66a441c169c8afe0310..7273e7cd3adb46f246fe81e85a8e7c96d2e93713 100644 (file)
@@ -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;
         }