Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code | Sign in
(627)

Side by Side Diff: Objects/typeobject.c

Issue 20051: Minimal patch to secure the Python interpreter
Patch Set: Created 16 years, 8 months ago
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments. Please Sign in to add in-line comments.
Jump to:
View unified diff | Download patch
« no previous file with comments | « Objects/genobject.c ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* Type object implementation */ 1 /* Type object implementation */
2 2
3 #include "Python.h" 3 #include "Python.h"
4 #include "structmember.h" 4 #include "structmember.h"
5 5
6 #include <ctype.h> 6 #include <ctype.h>
7 7
8 static PyMemberDef type_members[] = { 8 static PyMemberDef type_members[] = {
9 {"__basicsize__", T_INT, offsetof(PyTypeObject,tp_basicsize),READONLY}, 9 {"__basicsize__", T_INT, offsetof(PyTypeObject,tp_basicsize),READONLY},
10 {"__itemsize__", T_INT, offsetof(PyTypeObject, tp_itemsize), READONLY}, 10 {"__itemsize__", T_INT, offsetof(PyTypeObject, tp_itemsize), READONLY},
(...skipping 2230 matching lines...) Expand 10 before | Expand all | Expand 10 after
2241 */ 2241 */
2242 PyObject_Free((char *)type->tp_doc); 2242 PyObject_Free((char *)type->tp_doc);
2243 Py_XDECREF(et->ht_name); 2243 Py_XDECREF(et->ht_name);
2244 Py_XDECREF(et->ht_slots); 2244 Py_XDECREF(et->ht_slots);
2245 type->ob_type->tp_free((PyObject *)type); 2245 type->ob_type->tp_free((PyObject *)type);
2246 } 2246 }
2247 2247
2248 static PyObject * 2248 static PyObject *
2249 type_subclasses(PyTypeObject *type, PyObject *args_ignored) 2249 type_subclasses(PyTypeObject *type, PyObject *args_ignored)
2250 { 2250 {
2251
Martin v. Löwis 2009/02/23 22:57:36 The only issue I see here is that this is not C89
2252 if (PyEval_GetRestricted()) {
2253 PyErr_SetString(PyExc_RuntimeError,
2254 "__subclasses__ is not accessible in restricted mode.");
2255 return NULL;
2256 }
2257
2251 PyObject *list, *raw, *ref; 2258 PyObject *list, *raw, *ref;
2252 Py_ssize_t i, n; 2259 Py_ssize_t i, n;
2253 2260
2254 list = PyList_New(0); 2261 list = PyList_New(0);
2255 if (list == NULL) 2262 if (list == NULL)
2256 return NULL; 2263 return NULL;
2257 raw = type->tp_subclasses; 2264 raw = type->tp_subclasses;
2258 if (raw == NULL) 2265 if (raw == NULL)
2259 return list; 2266 return list;
2260 assert(PyList_Check(raw)); 2267 assert(PyList_Check(raw));
(...skipping 3735 matching lines...) Expand 10 before | Expand all | Expand 10 after
5996 0, /* tp_base */ 6003 0, /* tp_base */
5997 0, /* tp_dict */ 6004 0, /* tp_dict */
5998 super_descr_get, /* tp_descr_get */ 6005 super_descr_get, /* tp_descr_get */
5999 0, /* tp_descr_set */ 6006 0, /* tp_descr_set */
6000 0, /* tp_dictoffset */ 6007 0, /* tp_dictoffset */
6001 super_init, /* tp_init */ 6008 super_init, /* tp_init */
6002 PyType_GenericAlloc, /* tp_alloc */ 6009 PyType_GenericAlloc, /* tp_alloc */
6003 PyType_GenericNew, /* tp_new */ 6010 PyType_GenericNew, /* tp_new */
6004 PyObject_GC_Del, /* tp_free */ 6011 PyObject_GC_Del, /* tp_free */
6005 }; 6012 };
OLDNEW
« no previous file with comments | « Objects/genobject.c ('k') | no next file » | no next file with comments »

Powered by Google App Engine
RSS Feeds Recent Issues | This issue
This is Rietveld f62528b