diff Python/bltinmodule.c @ 18885:22456d0ee737 legacy-trunk

Fix for SF bug [ #443866 ] Evaluating func_code causing core dump If the code object has free variables, raise TypeError.
author Jeremy Hylton <jeremy@alum.mit.edu>
date Mon, 30 Jul 2001 21:50:55 +0000
parents 03305602ba9b
children f12e1a766a14
line wrap: on
line diff
--- a/Python/bltinmodule.c	Mon Jul 30 21:49:22 2001 +0000
+++ b/Python/bltinmodule.c	Mon Jul 30 21:50:55 2001 +0000
@@ -800,8 +800,14 @@
 					 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,