Commit 72f20540 authored by Jim Fulton's avatar Jim Fulton

Fixed leak in exception handler.

parent 82067bd5
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
__doc__='''CGI Response Output formatter __doc__='''CGI Response Output formatter
$Id: Response.py,v 1.18 1997/10/22 14:48:26 jim Exp $''' $Id: Response.py,v 1.19 1997/10/29 18:46:55 jim Exp $'''
# Copyright # Copyright
# #
# Copyright 1996 Digital Creations, L.C., 910 Princess Anne # Copyright 1996 Digital Creations, L.C., 910 Princess Anne
...@@ -55,6 +55,9 @@ $Id: Response.py,v 1.18 1997/10/22 14:48:26 jim Exp $''' ...@@ -55,6 +55,9 @@ $Id: Response.py,v 1.18 1997/10/22 14:48:26 jim Exp $'''
# (540) 371-6909 # (540) 371-6909
# #
# $Log: Response.py,v $ # $Log: Response.py,v $
# Revision 1.19 1997/10/29 18:46:55 jim
# Fixed leak in exception handler.
#
# Revision 1.18 1997/10/22 14:48:26 jim # Revision 1.18 1997/10/22 14:48:26 jim
# Added simple repr method top support printing requests. # Added simple repr method top support printing requests.
# #
...@@ -133,7 +136,7 @@ $Id: Response.py,v 1.18 1997/10/22 14:48:26 jim Exp $''' ...@@ -133,7 +136,7 @@ $Id: Response.py,v 1.18 1997/10/22 14:48:26 jim Exp $'''
# #
# #
# #
__version__='$Revision: 1.18 $'[11:-2] __version__='$Revision: 1.19 $'[11:-2]
import string, types, sys, regex, regsub import string, types, sys, regex, regsub
...@@ -515,6 +518,7 @@ class Response: ...@@ -515,6 +518,7 @@ class Response:
if type(v) == types.StringType and absuri_re.match(v) >= 0: if type(v) == types.StringType and absuri_re.match(v) >= 0:
if self.status==300: self.setStatus(302) if self.status==300: self.setStatus(302)
self.setHeader('location', v) self.setHeader('location', v)
tb=None
return self return self
else: else:
try: try:
...@@ -523,31 +527,35 @@ class Response: ...@@ -523,31 +527,35 @@ class Response:
if self.status==300: self.setStatus(302) if self.status==300: self.setStatus(302)
self.setHeader('location', l) self.setHeader('location', l)
self.setBody(b) self.setBody(b)
tb=None
return self return self
except: pass except: pass
b=v b=v
if fatal: if fatal:
if t is SystemExit and v==0: if t is SystemExit and v==0:
return self.setBody( tb=self.setBody(
(str(t), (str(t),
'This application has exited normally.<p>' 'This application has exited normally.<p>'
+ self._traceback(t,v,tb))) + self._traceback(t,v,tb)))
else: else:
return self.setBody( tb=self.setBody(
(str(t), (str(t),
'Sorry, a SERIOUS APPLICATION ERROR occurred.<p>' 'Sorry, a SERIOUS APPLICATION ERROR occurred.<p>'
+ self._traceback(t,v,tb))) + self._traceback(t,v,tb)))
if type(b) is not types.StringType or regex.search('[ \t\n]',b) < 0: elif type(b) is not types.StringType or regex.search('[a-zA-Z]>',b) < 0:
return self.setBody( tb=self.setBody(
(str(t), (str(t),
'Sorry, an error occurred.<p>' 'Sorry, an error occurred.<p>'
+ self._traceback(t,v,tb))) + self._traceback(t,v,tb)))
if self.isHTML(b): return self.setBody(b+self._traceback(t,v,tb)) elif self.isHTML(b):
tb=self.setBody(b+self._traceback(t,v,tb))
else:
tb=self.setBody((str(t),b+self._traceback(t,v,tb)))
return self.setBody((str(t),b+self._traceback(t,v,tb))) return tb
_wrote=None _wrote=None
...@@ -568,7 +576,7 @@ class Response: ...@@ -568,7 +576,7 @@ class Response:
elif name=='secure': cookie = '%s; Secure' % cookie elif name=='secure': cookie = '%s; Secure' % cookie
elif name!='value': elif name!='value':
raise ValueError, ( raise ValueError, (
'Invalid cookie attribute, %s' % name) 'Invalid cookie attribute, <em>%s</em>' % name)
cookie_list.append(cookie) cookie_list.append(cookie)
return cookie_list return cookie_list
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment