From ab6f2f6eb680c40750f05de4bc7cf8964b733b74 Mon Sep 17 00:00:00 2001 From: Georg Brandl Date: Tue, 31 Mar 2009 04:16:10 +0000 Subject: Fix segfaults when running test_exceptions with coverage tracing, caused by wrongly defining Exception.__context__ as a T_OBJECT structmember which does not set the member to NULL on None assignment, and generally does not do type checks. This could be used to crash the interpreter by setting any object to __context__. The same applies to __cause__. Also document the PyException_* functions. --- Lib/test/test_exceptions.py | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'Lib/test/test_exceptions.py') diff --git a/Lib/test/test_exceptions.py b/Lib/test/test_exceptions.py index b671cbc12d5..8bb20791d74 100644 --- a/Lib/test/test_exceptions.py +++ b/Lib/test/test_exceptions.py @@ -341,6 +341,12 @@ class ExceptionTests(unittest.TestCase): else: self.fail("No exception raised") + def testInvalidAttrs(self): + self.assertRaises(TypeError, setattr, Exception(), '__cause__', 1) + self.assertRaises(TypeError, delattr, Exception(), '__cause__') + self.assertRaises(TypeError, setattr, Exception(), '__context__', 1) + self.assertRaises(TypeError, delattr, Exception(), '__context__') + def testNoneClearsTracebackAttr(self): try: raise IndexError(4) -- cgit v1.2.3