]> granicus.if.org Git - python/commitdiff
SF bug #1004088: big code objects (>64K) may be optimized incorrectly
authorRaymond Hettinger <python@rcn.com>
Fri, 6 Aug 2004 19:46:34 +0000 (19:46 +0000)
committerRaymond Hettinger <python@rcn.com>
Fri, 6 Aug 2004 19:46:34 +0000 (19:46 +0000)
Will backport.

Python/compile.c

index 0b5ba6cd3814723a49d6151ea9a1c5243bfe6607..5c67987a9a9ce2800866f60b3f6d537045a26409 100644 (file)
@@ -379,6 +379,11 @@ optimize_code(PyObject *code, PyObject* consts, PyObject *names)
        if (codestr == NULL)
                goto exitUnchanged;
        codestr = memcpy(codestr, PyString_AS_STRING(code), codelen);
+
+       /* Avoid situations where jump retargeting could overflow */
+       if (codelen > 65000)
+               goto exitUnchanged;
+
        blocks = markblocks(codestr, codelen);
        if (blocks == NULL) {
                PyMem_Free(codestr);