[Zope-CMF] formatRFC822Headers weakness?
Raphael Ritz
r.ritz at biologie.hu-berlin.de
Wed Mar 10 06:53:51 EST 2004
Hi,
When users on my site enter object descriptions (for the DC Description)
including blank lines or trailing newlines this breaks FTP (and
therefore ExternalEdit) support because these newlines also appear
in the RFC822 header causing a false parsing on re-upload.
I fixed this on my site by changing formatRFC822Headers in
CMFDefault.utils to
def formatRFC822Headers( headers ):
""" Convert the key-value pairs in 'headers' to valid RFC822-style
headers, including adding leading whitespace to elements which
contain newlines in order to preserve continuation-line
semantics.
"""
munged = []
## linesplit = re.compile( r'[\n\r]+?' ) # changed to
linesplit = re.compile( r'[\n\r]+' )
for key, value in headers:
vallines = linesplit.split( value )
# added the following two lines (remove last line if empty)
if not vallines[-1]:
vallines = vallines[:-1]
munged.append( '%s: %s' % ( key, '\r\n '.join( vallines ) ) )
return '\r\n'.join( munged )
So far, I didn't notice breaking anything in other places but I only
tested external edit with emacs on Linux.
I don't have a windows system to check whether something might be
broken there.
If people (Tres, Yuppie, ...) consider this safe, feel free to check it in.
Raphael
More information about the Zope-CMF
mailing list