From b94eef2ae3737b1f03452a30d5c96640c838dc46 Mon Sep 17 00:00:00 2001 From: Serhiy Storchaka Date: Mon, 19 Dec 2016 08:04:15 +0200 Subject: Issue #20191: Fixed a crash in resource.prlimit() when pass a sequence that doesn't own its elements as limits. --- Lib/test/test_resource.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'Lib/test') diff --git a/Lib/test/test_resource.py b/Lib/test/test_resource.py index 2ecae0fc45..cc9c57024d 100644 --- a/Lib/test/test_resource.py +++ b/Lib/test/test_resource.py @@ -158,6 +158,20 @@ class ResourceTest(unittest.TestCase): self.assertEqual(resource.prlimit(0, resource.RLIMIT_AS, limit), limit) + # Issue 20191: Reference counting bug + @unittest.skipUnless(hasattr(resource, 'prlimit'), 'no prlimit') + @support.requires_linux_version(2, 6, 36) + def test_prlimit_refcount(self): + class BadSeq: + def __len__(self): + return 2 + def __getitem__(self, key): + return limits[key] - 1 # new reference + + limits = resource.getrlimit(resource.RLIMIT_AS) + self.assertEqual(resource.prlimit(0, resource.RLIMIT_AS, BadSeq()), + limits) + def test_main(verbose=None): support.run_unittest(ResourceTest) -- cgit v1.2.1