[Zope-Checkins] SVN: Zope/trunk/ - Forward port fix from 2.8 branch
Sidnei da Silva
sidnei at enfoldsystems.com
Thu Oct 13 10:13:02 EDT 2005
Log message for revision 39116:
- Forward port fix from 2.8 branch
- OFS.Image.manage_FTPget() would str() it's .data attribute,
potentially loading the whole file in memory as a
string. Changed to use RESPONSE.write() iterating through the
Pdata chain, just like index_html().
Changed:
U Zope/trunk/doc/CHANGES.txt
U Zope/trunk/lib/python/OFS/Image.py
-=-
Modified: Zope/trunk/doc/CHANGES.txt
===================================================================
--- Zope/trunk/doc/CHANGES.txt 2005-10-13 13:03:40 UTC (rev 39115)
+++ Zope/trunk/doc/CHANGES.txt 2005-10-13 14:13:02 UTC (rev 39116)
@@ -48,6 +48,11 @@
Bugs Fixed
+ - OFS.Image.manage_FTPget() would str() it's .data attribute,
+ potentially loading the whole file in memory as a
+ string. Changed to use RESPONSE.write() iterating through the
+ Pdata chain, just like index_html().
+
- Collector #1863: Prevent possibly sensitive information to leak via
the TransientObject's __repr__ method.
Modified: Zope/trunk/lib/python/OFS/Image.py
===================================================================
--- Zope/trunk/lib/python/OFS/Image.py 2005-10-13 13:03:40 UTC (rev 39115)
+++ Zope/trunk/lib/python/OFS/Image.py 2005-10-13 14:13:02 UTC (rev 39116)
@@ -594,6 +594,8 @@
def manage_FTPget(self):
"""Return body for ftp."""
+ RESPONSE = self.REQUEST.RESPONSE
+
if self.ZCacheable_isCachingEnabled():
result = self.ZCacheable_get(default=None)
if result is not None:
@@ -602,11 +604,20 @@
# from FileCacheManager.
# the content-length is required here by HTTPResponse, even
# though FTP doesn't use it.
- self.REQUEST.RESPONSE.setHeader('Content-Length', self.size)
+ RESPONSE.setHeader('Content-Length', self.size)
return result
- return str(self.data)
+ data = self.data
+ if type(data) is type(''):
+ RESPONSE.setBase(None)
+ return data
+ while data is not None:
+ RESPONSE.write(data.data)
+ data = data.next
+
+ return ''
+
manage_addImageForm=DTMLFile('dtml/imageAdd',globals(),
Kind='Image',kind='image')
def manage_addImage(self, id, file, title='', precondition='', content_type='',
More information about the Zope-Checkins
mailing list