]> granicus.if.org Git - python/commitdiff
Fix for SF bug [ #443866 ] Evaluating func_code causing core dump
authorJeremy Hylton <jeremy@alum.mit.edu>
Mon, 30 Jul 2001 21:50:55 +0000 (21:50 +0000)
committerJeremy Hylton <jeremy@alum.mit.edu>
Mon, 30 Jul 2001 21:50:55 +0000 (21:50 +0000)
If the code object has free variables, raise TypeError.

Python/bltinmodule.c

index 6eb6acae56f1dd03735faa62f4ab413ee364c6d3..362cdaa2787dd234a09754d095647a73d03d056a 100644 (file)
@@ -800,8 +800,14 @@ builtin_eval(PyObject *self, PyObject *args)
                                         PyEval_GetBuiltins()) != 0)
                        return NULL;
        }
-       if (PyCode_Check(cmd))
+       if (PyCode_Check(cmd)) {
+               if (PyTuple_GET_SIZE(((PyCodeObject *)cmd)->co_freevars) > 0) {
+                       PyErr_SetString(PyExc_TypeError,
+               "code object passed to eval() may not contain free variables");
+                       return NULL;
+               }
                return PyEval_EvalCode((PyCodeObject *) cmd, globals, locals);
+       }
        if (!PyString_Check(cmd) &&
            !PyUnicode_Check(cmd)) {
                PyErr_SetString(PyExc_TypeError,