[Zope-Checkins] SVN: Zope/branches/Zope-2_8-branch/ Backported r41704:41705 from 2.9 branch because it is a security fix.

Stefan H. Holek stefan at epy.co.at
Sun Feb 19 13:53:09 EST 2006


Log message for revision 41707:
  Backported r41704:41705 from 2.9 branch because it is a security fix.
  
  Under Python 2.4 the ZPublisher would allow publication of 'set' and
  'frozenset' attributes.
  

Changed:
  U   Zope/branches/Zope-2_8-branch/doc/CHANGES.txt
  U   Zope/branches/Zope-2_8-branch/lib/python/ZPublisher/BaseRequest.py
  U   Zope/branches/Zope-2_8-branch/lib/python/ZPublisher/tests/testBaseRequest.py

-=-
Modified: Zope/branches/Zope-2_8-branch/doc/CHANGES.txt
===================================================================
--- Zope/branches/Zope-2_8-branch/doc/CHANGES.txt	2006-02-19 18:46:57 UTC (rev 41706)
+++ Zope/branches/Zope-2_8-branch/doc/CHANGES.txt	2006-02-19 18:53:08 UTC (rev 41707)
@@ -28,7 +28,8 @@
     Bugs Fixed
 
       - ZPublisher.BaseRequest: The publisher would happily publish attributes
-        of type 'bool' and 'complex'.
+        of type 'bool' and 'complex', as well as Python 2.4's 'set' and
+        'frozenset'.
 
       - Collector #1991: ZPublisher did not deal properly with a trailing
         %20 in the URL

Modified: Zope/branches/Zope-2_8-branch/lib/python/ZPublisher/BaseRequest.py
===================================================================
--- Zope/branches/Zope-2_8-branch/lib/python/ZPublisher/BaseRequest.py	2006-02-19 18:46:57 UTC (rev 41706)
+++ Zope/branches/Zope-2_8-branch/lib/python/ZPublisher/BaseRequest.py	2006-02-19 18:53:08 UTC (rev 41707)
@@ -566,6 +566,7 @@
 # Zope 3 by then :)
 
 import types
+import sys
 
 itypes = {}
 for name in ('NoneType', 'IntType', 'LongType', 'FloatType', 'StringType',
@@ -576,6 +577,11 @@
     if hasattr(types, name):
         itypes[getattr(types, name)] = 0
 
+# Python 2.4 no longer maintains the types module.
+if sys.version_info >= (2, 4):
+    itypes[set] = 0
+    itypes[frozenset] = 0
+
 def typeCheck(obj, deny=itypes):
     # Return true if its ok to publish the type, false otherwise.
     return deny.get(type(obj), 1)

Modified: Zope/branches/Zope-2_8-branch/lib/python/ZPublisher/tests/testBaseRequest.py
===================================================================
--- Zope/branches/Zope-2_8-branch/lib/python/ZPublisher/tests/testBaseRequest.py	2006-02-19 18:46:57 UTC (rev 41706)
+++ Zope/branches/Zope-2_8-branch/lib/python/ZPublisher/tests/testBaseRequest.py	2006-02-19 18:53:08 UTC (rev 41707)
@@ -239,7 +239,18 @@
         self.assertRaises(NotFound, r.traverse, 'folder/simpleBoolean')
         self.assertRaises(NotFound, r.traverse, 'folder/simpleComplex')
 
+    import sys
+    if sys.version_info >= (2, 4):
 
+        def test_traverse_set_type(self):
+            from ZPublisher import NotFound
+            self.f1.simpleSet = set([])
+            self.f1.simpleFrozenSet = frozenset([])
+            r = self.makeBaseRequest()
+            self.assertRaises(NotFound, r.traverse, 'folder/simpleSet')
+            self.assertRaises(NotFound, r.traverse, 'folder/simpleFrozenSet')
+
+
 def test_suite():
     return TestSuite( ( makeSuite(TestBaseRequest), ) )
 



More information about the Zope-Checkins mailing list