summaryrefslogtreecommitdiffstats
path: root/Lib/test/crashers/modify_dict_attr.py
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/test/crashers/modify_dict_attr.py')
-rw-r--r--Lib/test/crashers/modify_dict_attr.py20
1 files changed, 20 insertions, 0 deletions
diff --git a/Lib/test/crashers/modify_dict_attr.py b/Lib/test/crashers/modify_dict_attr.py
new file mode 100644
index 0000000..11c6721
--- /dev/null
+++ b/Lib/test/crashers/modify_dict_attr.py
@@ -0,0 +1,20 @@
+
+# http://python.org/sf/1303614
+
+class Y(object):
+ pass
+
+class type_with_modifiable_dict(type, Y):
+ pass
+
+class MyClass(object):
+ """This class has its __dict__ attribute indirectly
+ exposed via the __dict__ getter/setter of Y.
+ """
+ __metaclass__ = type_with_modifiable_dict
+
+
+if __name__ == '__main__':
+ dictattr = Y.__dict__['__dict__']
+ dictattr.__delete__(MyClass) # if we set tp_dict to NULL,
+ print MyClass # doing anything with MyClass segfaults